Skip to main content
 首页 » 编程设计

c#之使用 LINQ 过滤掉空集合属性

2024年01月24日26jirigala

我正在尝试根据属性提取列表的子集。该属性本身就是一个集合,我只对该集合不为 null 的值感兴趣

我的代码是:

var subGroupCollection = groupContext.SubGroups.Where(sg => sg.Holds != null).ToList(); 

我收到以下运行时错误:

无法比较类型为“System.Collections.Generic.ICollection`1[[WW2.Hold, WW2, Version=6.0.5848.30559, Culture=neutral, PublicKeyToken=null]]”的元素。仅支持基本类型、枚举类型和实体类型。

"Holds"是集合属性的名称(这是一个 Hold 对象的 HashSet)

这里有什么问题,是否有明显的解决方案?

请您参考如下方法:

集合在 EF 中永远不会是 null。它可能是空,但它永远不会是null。事实上,您甚至无法将整个集合与 null 进行比较,这正是错误告诉您的内容。如果您想获取该集合中包含任何项目的项目,请使用 Any 来确定。