LINQ-запрос для возврата true, если для каждого человека существует связанная (связанная) запись - PullRequest
1 голос
/ 27 февраля 2012

У меня есть объект People со связанной (связанной) таблицей FavoritePeople.Объект FavoritePeople просто хранит UserId и PersonId, чтобы мы знали, какие люди являются избранными пользователей.

Я использую Entity Framework 4.2 с Code First, и я сопоставил все поля в People, кроме IsFavorite, которыйBoolean, и моя идея заключалась в том, чтобы установить для этого параметра значение true, если в FavoritePeople существует связанная запись.

Я хотел бы вернуть все записи о людях с правильным значением в столбце IsFavorite.

ХотяЯ могу понять, как это сделать в SQL, я застрял на том, как это сделать в LINQ!

Есть предложения?

Ответы [ 2 ]

1 голос
/ 27 февраля 2012

Если у вас есть свойство для FavoritePeople, вы можете иметь возможность ..

public bool IsFavorite {get{return FavoritePeople.Any();}}
0 голосов
/ 14 февраля 2014

У меня недостаточно представителей, чтобы комментировать, поэтому я отвечу ответом;

Использование решения Tyron даст вам ужасную производительность, если вы выберете несколько пользователей.

Вы должны либо загружать ссылку FavoritePeople с помощью .Include(x => x.FavoritePeople) при запросе людей (предупреждение: вероятность огромного набора данных из БД)ИЛИ (желательно) переписать ваш запрос, чтобы включить IsFavorite:

ctx.Peoples.Select(x => new 
{ 
     x.Name, 
     IsFavorite = x.FavoritePeople.Any()
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...