LINQ, имеющий пункт с внутренним выбором - PullRequest
1 голос
/ 23 июля 2010

Как бы преобразовать следующее в LINQ - EF

select Name
from TableA as TableAOuter
group by TableAOuter.Name, TableAOuter.Id
having(
    select count(TableAInner.Id)
    from TableA as TableAInner
    where TAbleAInner.Reference=TableAOuter.Id) = 0
);

1 Ответ

2 голосов
/ 23 июля 2010

Для меня это выглядит так:

var query = from row in tableOuter
            group row by new { row.Name, row.Id } into g
            where !tableInner.Any(inner => inner.Reference == g.Key.Id)
            select g.Key.Name;

Хотя у меня будет соблазн выполнить фильтрацию перед группировкой - в этот момент вы можете просто сгруппировать имя строки:

var query = from row in tableOuter
            where !tableInner.Any(row => inner.Reference == row.Id)
            group row.Name by new { row.Name, row.Id };

Я думаю , что должно делать то же самое, верно?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...