如何在Linq查询中将IEnumerable与null进行比较
对于以下查询:如何在Linq查询中将IEnumerable与null进行比较,linq,Linq,对于以下查询: var result = from sch in schemeDashboard join exp in Expenditure on sch.schemeId equals exp.SchemeCode into SchExpGroup where sch.SectorDepartmentId == selectedDepartmentId && sch.YearCode ==
var result = from sch in schemeDashboard
join exp in Expenditure on sch.schemeId equals exp.SchemeCode
into SchExpGroup
where sch.SectorDepartmentId == selectedDepartmentId &&
sch.YearCode == StateManager.CurrentYear
orderby sch.ADPId
select new
{
ModifiedAmounts = SchExpGroup.Select(a => a.ModifiedAmounts),
ProjectName = sch.schemeName,
ADPNo = sch.ADPId,
Allocation = sch.CurrentAllocation,
Expenditures = from expend in SchExpGroup
where expend.YearCode == StateManager.CurrentYear &&
expend.DepartmentId == selectedDepartmentId &&
InvStatus.Contains(expend.Status)
orderby expend.ADPId
group expend by expend.InvoiceId
};
我想根据一个条件过滤上面的查询,以便结果只给出ModifiedAmounts不为null的记录。我尝试了以下方法:
if (rbList2.SelectedIndex == 6)
{
result = result.Where(a => a.ModifiedAmounts != null));
}
但这会产生如下错误:
无法比较类型为的元素
'System.Collections.Generic.IEnumerable'1'。只有基元类型,
支持枚举类型和实体类型
任何关于如何重新表述过滤后的查询的建议我都不知道。我认为问题在于ModifiedAmounts永远不会为空。选择将返回一个空列表。除非SchExpGroup为null,否则在这种情况下,您将获得null引用异常 尝试将代码更改为
result = result.Where(a => a.ModifiedAmounts.Any());
我认为问题在于ModifiedAmounts无论如何都不会为null,而是一个空列表。除非SchExpGroup为null,在这种情况下,表达式将在null引用上失败。可能try result=result.where=>a.ModifiedAmounts.Any@雷萨里亚:大卫,谢谢你,大卫。回答了这个问题。欢迎使用堆栈溢出!请不要把你的源代码扔在这里。对你的答案要和蔼可亲,尽量给它一个很好的描述,这样其他人就会喜欢它并投赞成票。见:
if (rbList2.SelectedIndex == 6)
{
result = result.Where(a => a.!ModifiedAmounts.Any());
}