如何使用linq获取集合,但从嵌套集合中去掉一些实体
本文关键字:集合 实体 嵌套 linq 何使用 获取 | 更新日期: 2023-09-27 18:06:13
我有这个linq:
List<Group> groups =
context.Groups.Where(group => group.Station.Id == stationId).ToList();
但我的群用户太多了。
我想合并这个:
group.Users.Where(u => u.Account.IsActive == true)
但是我把它放在任何地方都会出错。
在尝试了这么多事情却没有做好之后,我们非常感谢你的帮助。
更新:
这是我在尝试All((和其他函数时遇到的唯一语法错误。。我以前似乎从未和林克有过如此复杂的关系。。
更新:
List<Group> groups = context.Groups.Where(group =>
group.Station.Id == stationId &&
group.Users.Where(u => u.Account.IsActive == true)).ToList();
错误:
操作员的&;'不能应用于"bool"类型的操作数,并且"System.Collections.Generic.IENumberable">
List<Group> groups = context.Groups
.Where(group => group.Station.Id == stationId
&& group.Users.Where(u => u.Account.IsActive == true).Count() > 0).ToList();
你应该把它和count比较一下。这就是错误。
你不能这么做。尚未实现相关实体的筛选。一次只能加载所有相关实体。
因此,您不能从组中删除非活动用户或对其进行筛选,您应该只使用活动用户创建新组。如果使用实体框架,则无法在服务器端执行此操作(您将看到实体或复杂类型"Group"无法在LINQ to Entities查询中构造(。但您可以返回具有所需数据的匿名对象:
var groups = from g in context.Groups
where g.Station.Id == stationId
select new {
Id = g.Id,
ActiveUsers = g.Users.Where(u => u.Account.IsActive)
};