c # Linq Object subQuery / In - PullRequest
       11

c # Linq Object subQuery / In

3 голосов
/ 19 января 2010

У меня есть 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 я получаю общий список разделов List mySections = SectionDB.getList ();

и мой объект User содержит информацию о пользователе Пользователь myUser = UserDB.getInfo (sid);

Используя linq к объектам, возможно ли сделать запрос, который возвращает все разделы, где есть хотя бы одна группа в пользовательском классе groups?

Любая помощь?

Ответы [ 2 ]

2 голосов
/ 19 января 2010
var sections = mySections.Where(x => x.Groups.Intersect(myUser.Groups)
    .Any()).ToList();

(обратите внимание, что это зависит либо от ссылочного равенства экземпляров Group, либо от подходящей реализации Equals / GetHashCode для типа Group)

2 голосов
/ 19 января 2010
from section in mySections
from sectionGroup in section.Groups
where myUser.Groups.Any(userGroup => userGroup == sectionGroup)
select section

Я бы предпочел любой, так как вы используете итератор гораздо эффективнее

...