使用IQueryable.Where方法返回所有模型属性,即使为null或空



我有一个相当简单的HttpGet请求,它通过Id返回一个模型。

它正在工作,但不会返回为null的模型属性。它只是把他们排除在外。

我搜索了又搜索,但我找不到一种方法让它返回每个模型属性,即使它恰好为null。

这是我的方法:

[HttpGet("GetOptionsByMachineId/{id}")]
public async Task<ActionResult<IEnumerable<MachineOptions>>> GetOptionsByMachineId(Guid id)
{
var optionsByMachine = await _context.MachineOptions.Where(q => q.MachineId == id).OrderBy(c => c.OrderId).ToListAsync();
return optionsByMachine;
}

这是MachineOptions的模型:

public partial class MachineOptions
{
public Guid OptionId { get; set; }
public Guid? PartId { get; set; }
public string OptionText { get; set; }
public string PartDepartment { get; set; }
public string DepartmentManager { get; set; }
public int? OrderId { get; set; }
}

有时数据库中MachineOptions的值为null,但我仍然希望控制器将模型属性返回为null,如下所示:

{
"OptionId": "3ec4daad-b104-4b0f-9e5d-236bdc853a58",
"PartId": "dfd5fb42-d47c-4445-8168-82201ddc1247",
"OptionText": "Clear Coat",
"PartDepartment": "Paint",
"DepartmentManager": "" // or just say null
"orderId": 1
}

但现在的情况是,它只保留了任何空值或null值,在本例中是DepartmentManager,DepartmentManager完全缺失,如下所示:

{
"OptionId": "3ec4daad-b104-4b0f-9e5d-236bdc853a58",
"PartId": "dfd5fb42-d47c-4445-8168-82201ddc1247",
"OptionText": "Clear Coat",
"PartDepartment": "Paint",
"orderId": 1
}

我试着为";其中";,但我找不到。

有办法让它做我需要的事吗?

谢谢!

其中一种方法是

[HttpGet("GetOptionsByMachineId/{id}")]
public async Task<ActionResult<IEnumerable<MachineOptions>>> GetOptionsByMachineId(Guid id)
{
MachineOptions optionsByMachine=new MachineOptions();  
MachineOptions = await _context.MachineOptions.Where(q => q.MachineId == id).OrderBy(c => c.OrderId).ToListAsync();
if(MachineOptions.DepartmentManager==null)
{
MachineOptions.DepartmentManager="null";
}
return optionsByMachine;
}

最新更新