Я работаю над приложением WP7, используя Linq To Sql. Я использовал Linq, но это первый раз, когда я использовал Linq для Sql. У меня проблема с фильтрацией данных в EntitySet. Я, возможно, делаю это неправильно, я понятия не имею. То, что у меня есть сейчас, работает, но мне нужно отфильтровать один из наборов EntitySets.
У меня есть 4 таблицы. Таблица связывания Parent, Child, Grandchild и ParentChild. Когда я запрашиваю ParentChild, я возвращаю сущность ParentChild, и я могу отлично перебирать сущности Parent, Child и Grandchild. То, что я хочу сделать, это отфильтровать сущность внука.
Допустим, у меня есть отец и мать за родительским столом. Тогда у меня есть сын и дочь в детском столе. Потом внук и внучка за столом внука. Конечно, есть нормальные ассоциации и т. Д.
Я хочу вернуть отца, который также прекрасно справляется со всеми связанными таблицами. У меня проблема с фильтрацией внуков. Допустим, я хочу просто внука и иметь поле для секса. Как я могу это сделать? Я просто не могу понять это.
Вот код, который я использую, который отлично работает, но тянет всех внуков.
IQueryable<ParentChild> parentChild = from ParentChild c in DataContext.ParentChild
where c.ParentId == this.parentId
select c;
foreach (Grandchild grandchild in parentChild.SelectMany(parent => parent.Child.Grandchild))
{
Console.WriteLine(grandchild.Name);
}
Так что, если я сделаю это:
IQueryable<ParentChild> parentChild = from ParentChild c in DataContext.ParentChild
where c.ParentId == this.parentId && c.Child.Grandchild.Any(a => a.Sex == "F")
select c;
foreach (Grandchild grandchild in parentChild.SelectMany(parent => parent.Child.Grandchild))
{
Console.WriteLine(grandchild.Name);
}
У меня есть родитель, но у меня только дети, у которых есть внуки женского пола. Мне нужен родитель, все дети (даже если у них нет внуков-женщин или нет внуков) и только внуки-женщины.