c#Linq Object subQuery / In

时间:2010-01-19 12:10:33

标签: c# linq linq-to-objects

我有2个包含通用列表属性的对象。 IE:

public class User
{
    public string Sid { get; set; }
    public List<Group> Groups { get; set; }
}

public class Section
{
    public string Sid { get; set; }
    public List<Group> Groups { get; set; }
}

从我的BLL中我得到一个通用的部分列表 列出mySections = SectionDB.getList();

我的User对象包含用户信息 用户myUser = UserDB.getInfo(sid);

使用linq到对象,是否可以创建一个查询来检索组用户类中至少有一个组的所有部分?

任何帮助?

2 个答案:

答案 0 :(得分:2)

from section in mySections
from sectionGroup in section.Groups
where myUser.Groups.Any(userGroup => userGroup == sectionGroup)
select section

我宁愿选择任何,因为你更有效地使用迭代器

答案 1 :(得分:2)

var sections = mySections.Where(x => x.Groups.Intersect(myUser.Groups)
    .Any()).ToList();

(请注意,这取决于Group实例的引用相等,或Equals类型上合适的GetHashCode / Group实现