如何使用Linq To Sql获取少于2张照片的用户?

时间:2010-04-05 12:11:02

标签: linq-to-sql

该方案是我想要获得少于2张照片的用户。

有两个表:

[Users] (UserId, UserName) 

[UserPhotos] (PhotoId, PhotoName, UserId) 

UserId是外键,但我不想使用像user.Photos这样的关联。

用户可能没有[UserPhotos]表中的照片。

如何使用Linq To Sql获取少于2张照片的List<User>

2 个答案:

答案 0 :(得分:3)

也许这样:( 修复版本)

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 :(得分:1)

这有什么问题?

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

到目前为止这是最简单的 - 你为什么要特别使用这种方法?