[c#]不同与 Linq 中的组

标签: Linq SQLServer C#
发布时间: 2017/2/26 18:03:05
注意事项: 本文中文内容可能为机器翻译,如要查看英文原文请点击上面连接.
ID  UserName    BookType    bookID

1   Krish   1   1
1   Krish   1   2
1   Krish   2   1
1   Krish   2   2
2   Ram     1   1    
3   Raj     1   1
3   Raj     1   2

我有以上表和我想要不同的 booktype 计数和 bokkID 计数为每个用户,我能够写这篇文章在 sqlserver 但时候到 LINQ 无法编写查询。

我需要以下输出,

ID  UserName    BookType    bookID

1   Krish   2   2
2   Ram     1   1 
3   Raj     1   2

解决方法 1:

这应该给你正确的结果:-

var result = Userlist.GroupBy(x => new { x.ID, x.UserName })
                     .Select(x => new
                                 {
                                     ID = x.Key.ID,
                                     UserName = x.Key.UserName,
                                     BookType = x.Max(z => z.BookType),
                                     BookId = x.Max(z => z.BookId)
                                 });

更新︰

虽然你同意回答,我不知怎么错过了你的要求和我上面贴的答案是错的因为它获取最大的 BookType & BookId。下面是该查询以获取非重复计数:-

var result = Userlist.GroupBy(x => new { x.ID, x.UserName })
                     .Select(x => new
                         {
                            ID = x.Key.ID,
                            UserName = x.Key.UserName,
                            BookType = x.Select(z => z.BookType).Distinct().Count(),
                            BookId = x.Select(z => z.BookId).Distinct().Count()
                         });
官方微信
官方QQ群
31647020