我正在编写LINQ查询到返回null 如果它没有任何值(数据库中为null)但是如果它有0或正确的数字则返回 0或正确的数字在数据库中。
我关注了我的模型类
public class Test
{
public decimal? TotalHours { get; set; }
}
以下是LINQ选择查询。此行成功为nullHours分配null。我很好,直到这里。
List<Test> Item = parentQuery
.Select(x => new Test
{
TotalHours Hours = (decimal?) x.TotalMinutes != null ? (decimal?) x.TotalMinutes : (decimal?)null,
}).ToList();
如果TotalHours为null,我的另一个group by query赋值为0,而我希望它被指定/保持为null。
List<Test> ItemList = Item.GroupBy(x => x.Id)
.Select(x => new Test
{
TotalHours = x.Sum(y => (decimal?)y.TotalHours)
}).ToList();
我如何将null返回到我的视图?请不要建议Data Annotation方式。 感谢
答案 0 :(得分:1)
这样做的一种方法是明确测试非null
值的存在:
List<Test> ItemList = Item.GroupBy(x => x.Id)
.Select(x => new Test {
TotalHours = x.Any(y => y.TotalHours.HasValue) ? x.Sum(y => (decimal?)y.TotalHours) : null
}
).ToList();
使用Any(...)
的检查会在使用null
之前验证该组至少有一个非Sum
项。如果所有项都是null
,则表达式会生成null
结果。