Как использовать Linq To Sql, чтобы получить пользователей, у которых менее 2 фотографий? - PullRequest
1 голос
/ 05 апреля 2010

Сценарий таков: я хочу получить пользователей, у которых меньше 2 фотографий.

Есть две таблицы:

[Users] (UserId, UserName) 

[UserPhotos] (PhotoId, PhotoName, UserId) 

UserId - это внешний ключ, но я не хочу использовать ассоциацию, например user.Photos.

Пользователь может не иметь ни одной фотографии в таблице [UserPhotos].

Как использовать Linq To Sql, чтобы получить List<User>, у кого меньше 2 фотографий?

Ответы [ 2 ]

3 голосов
/ 05 апреля 2010

Может быть, это: ( исправлено версия)

List<User> users = UserPhotos.GroupBy(i => i.UserId)
                .Where(i => i.Count() > 2).Distinct()
                .Join(Users, o => o.Key, i => i.UserId, (o, i) => i)
                .ToList();

решение для измененного вопроса:

    List<User> result = Users.Where(user => !UserPhotos.GroupBy(i => i.UserId)
            .Where(i => i.Count() >= 2).Distinct()
            .Any(i => i.Key == user.UserId)).ToList();
1 голос
/ 05 апреля 2010

Что не так с этим ??

var query = from u in dbContext.Users
            where u.Photos.Count > 2
            select u;

Это было бы проще всего - почему вы хотите специально не использовать этот метод ??

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