C# 如何使用linq获取集合,但从嵌套集合中删除一些实体?

C# 如何使用linq获取集合,但从嵌套集合中删除一些实体?,c#,linq,C#,Linq,我有这个linq: List<Group> groups = context.Groups.Where(group => group.Station.Id == stationId).ToList(); 但是我不能在任何地方安装它而不出错 在尝试了这么多事情却没有得到正确的帮助后,我非常感激你的帮助 更新: List<Group> groups = context.Groups.Where(group => group.Station.I

我有这个linq:

List<Group> groups = 
   context.Groups.Where(group => group.Station.Id == stationId).ToList();
但是我不能在任何地方安装它而不出错

在尝试了这么多事情却没有得到正确的帮助后,我非常感激你的帮助

更新:

 List<Group> groups = context.Groups.Where(group => 
    group.Station.Id == stationId && 
    group.Users.Where(u => u.Account.IsActive == true)).ToList();
这是我在尝试All和其他函数时遇到的唯一语法错误。。我以前似乎没有和linq有过如此复杂的要求

更新:

 List<Group> groups = context.Groups.Where(group => 
    group.Station.Id == stationId && 
    group.Users.Where(u => u.Account.IsActive == true)).ToList();
错误:

运算符“&&”不能应用于“bool”和类型的操作数 'System.Collections.Generic.IEnumerable'

你不能这样做。尚未实施。一次只能加载所有相关实体

因此,您不能从组中删除非活动用户或对其进行筛选,您应该创建只有活动用户的新组。如果您使用实体框架,则无法在服务器端执行此操作,您将看到无法在LINQ to Entities查询中构造实体或复杂类型“Group”。但您可以返回包含所需数据的匿名对象:

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)
             };

你应该和伯爵比较一下。这就是错误。

没有出现错误您遇到了什么错误?你是什么时候编译或运行的?你明白错误吗?不,我不认为我在改变任何东西。。这只是对用户的限制pulled@Servy他正试图改变该组的用户列表——他想从中删除非活动用户result@MichaelWinther不幸的是,对于被拉入的用户没有限制选项-只有所有用户可以被拉入,所以进一步的“限制”是改变result@SergeyBerezovskiy好的,谢谢。那么,什么是最佳实践呢?现在迭代给我带来了问题,因为我在迭代时无法删除任何对象,我尝试跟踪用户,迭代后,我删除,还是像您尝试的那样创建sql2entities?它坏了,现在不能用了。。只是想在说我不能让它工作之前尝试一些东西。@SergeyBerezovskiy我最终用哈希集使它工作。谢谢
List<Group> groups = context.Groups
                            .Where(group => group.Station.Id == stationId 
                                            && group.Users.Where(u => u.Account.IsActive == true).Count() > 0).ToList();