Linq count trouble
本文关键字:trouble count Linq | 更新日期: 2023-09-27 18:11:26
我有两个表:
tblBadge
-------
ID
Name
tblBadgeUsers
-------
BadgeID
UserID
一个用户可以有多个徽章,所有的关系都在SQL数据库中正确设置。
我试图返回用户拥有的所有徽章的列表,以及这些徽章的总数。我只能到这里了,我有点糊涂了。我想返回tblBadge数据以及显示该徽章授予总数的额外列。
这是不工作,但我的尝试:
var q = db.tblBadgeUsers
.Where(c => c.UserID == UserID)
.GroupBy(c => c.BadgeID)
.Select(c => new { BadgeCount = c.Count(), Record = c.tblBadge });
假设一个只有的徽章确实有一个徽章ID和一个用户,听起来您只需要获得徽章ID和该徽章的计数即可使用—这意味着只需要获得组的密钥:
var q = db.tblBadgeUsers
.Where(c => c.UserID == UserID)
.GroupBy(c => c.BadgeID)
.Select(c => new { BadgeCount = c.Count(), BadgeId = c.Key });
如果每个徽章上有更多信息,您可能需要这样做:
var q = db.tblBadgeUsers
.Where(c => c.UserID == UserID)
.GroupBy(c => c.BadgeID)
.Select(c => new { BadgeCount = c.Count(), BadgeId = c.Key, Badges = c });
那么你可以这样做:
foreach (var badgeType in q)
{
Console.WriteLine("{0}: {1}", badgeType.BadgeId, badgeType.BadgeCount);
foreach (var badge in q.Badges)
{
// Deal with the badge information
}
}