Я работаю над приложением WP7 с использованием Linq To Sql. Я использовал Linq, но это первый, который я использовал Linq для Sql. У меня проблема с фильтрацией данных в EntitySet. Я, возможно, ошибаюсь, я понятия не имею. То, что у меня сейчас работает, но мне нужно получить один из фильтров EntitySets.LinqToSql Filter EntitySet
У меня есть 4 стола. Родитель, ребенок, внук и таблица ссылок ParentChild. Когда я запрашиваю ParentChild, я возвращаю объект ParentChild, и я могу выполнять итерацию через объекты Parent, Child и Grandchild. То, что я хочу сделать, - это фильтровать объект Grandchild.
Допустим, у меня есть отец и мать в Родительском столе. Затем у меня есть сын и дочь в таблице «Дети». Потом внук и внучка в таблице Внука. Конечно, есть нормальные ассоциации и т. Д.
Я хочу вернуть отца, который также дает мне все связанные таблицы просто отлично. Проблема в том, что у меня есть фильтрация на 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);
}
я родитель, но я получаю только дети, у которых есть женские внуки. Я хочу родителя, всех детей (даже если у них нет женских внуков или нет внуков) и только женских внуков.
Это именно то, что я получил после, и вам нужно больше upvotes! – Ian