Как я делаю это в Платформе Объекта (несколько, где или Соединение)?

Руководство по проектированию Алгоритма содержит некоторые интересные тематические исследования с творческим использованием графиков. Несмотря на ее имя, книга очень читаема и время от времени даже интересна.

5
задан marc_s 23 January 2016 в 09:30
поделиться

2 ответа

Фильтрация TableA перед объединением, вероятно, более эффективна:

var clubs = from a in Entity.TableA
            where a.userName == "bob"
            from b in a.TableB
            where b.clubId == "Car"
            select b;

var count = clubs.Count();

Вам не нужно использовать две переменные, это просто мое предпочтение здесь для ясности.

Или можно немного упростить синтаксис метода:

var count = Entity.TableA.Where(a => a.userName == "bob")
                         .SelectMany(a => a.TableB)
                         .Count(b => b.clubId == "Car");

Однако я не уверен, что EF понимает эти конкретные выражения. В противном случае компилятор переведет приведенный выше запрос следующим образом:

var count = Entity.TableA.Where(a => a.userName == "bob")
                         .SelectMany(a => a.TableB, (a,b) => new { a, b })
                         .Where(x => x.b.clubId == "Car")
                         .Count();
4
ответ дан 14 December 2019 в 01:13
поделиться

Предполагая, что ваша модель EF имеет отношения между пользователями и клубами, можно сделать что-то вроде этого:

var usersNamedBobInCarClub = 
             from A in User
             from B in A.Clubs
             where A.userName == "bob" &&
                   B.clubId == "Car"
             select A;

Если вы хотите, чтобы возвращаемые элементы как пользователей, так и клубов, взглянули на объединения в запросе.

5
ответ дан 14 December 2019 в 01:13
поделиться
Другие вопросы по тегам:

Похожие вопросы: