如何在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());
}