I have two tables:
tblBadge
-------
ID
Name
tblBadgeUsers
-------
BadgeID
UserID
A user can have many badges, all the relationships are set up properly in the SQL database.
I’m trying to return a list of all the badges a user has, along with the total number of those badges. This is about as far as I can get, I’m getting pretty confused. I want to return the tblBadge data along with an extra column showing the total of that badge awarded.
This doesn’t work but is my attempt:
var q = db.tblBadgeUsers
.Where(c => c.UserID == UserID)
.GroupBy(c => c.BadgeID)
.Select(c => new { BadgeCount = c.Count(), Record = c.tblBadge });
Given that a badge only really has a badge ID and a user, it sounds like you just need to get the badge ID and the count of that badge for the use – which means just getting the key for the group:
If there’s more information on each badge, you might want to do:
Then you could do: