与 Linq 中的 group by 不同
Distinct with group by in Linq
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
我有以上 table 并且我想为每个用户获取不同的 BookType 计数和 BookID 计数,我可以在 SQL 服务器中写这个但是当我来到 LINQ 时我是无法编写查询。
我需要以下输出
ID UserName BookType BookID
1 Krish 2 2
2 Ram 1 1
3 Raj 1 2
这应该会给你正确的结果:-
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()
});
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
我有以上 table 并且我想为每个用户获取不同的 BookType 计数和 BookID 计数,我可以在 SQL 服务器中写这个但是当我来到 LINQ 时我是无法编写查询。
我需要以下输出
ID UserName BookType BookID
1 Krish 2 2
2 Ram 1 1
3 Raj 1 2
这应该会给你正确的结果:-
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()
});