【问题标题】:Distinct with group by in Linq与 Linq 中的 group by 不同
【发布时间】:2020-01-08 18:06:13
【问题描述】:
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 计数和 BookID 计数,我可以在 SQL Server 中编写它,但是当我使用 LINQ 时,我无法编写查询。

我需要以下输出

ID  UserName    BookType    BookID

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

【问题讨论】:

标签: c# sql-server linq linq-to-sql


【解决方案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()
                         });

【讨论】:

  • 我认为 max 有问题,每次给出最大数时
  • @Sagar - 很高兴为您提供帮助 :) 但从下次开始,不要忘记展示您的努力。
  • Sagar - 请检查我的更新。 @petelids - 谢谢 :)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-12-18
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多