I have this function:
/// <summary>
/// Return array of all badges for a users
/// </summary>
public static Badge[] getUserBadges(int UserID)
{
Badge[] ReturnBadges;
using (MainContext db = new MainContext())
{
var q = db.tblBadgeUsers
.Where(c => c.UserID == UserID)
.GroupBy(c => c.BadgeID)
.Select(c => new { BadgeCount = c.Count(), TheBadge = c });
ReturnBadges = new Badge[q.Count()];
int i = 0;
foreach (var UserBadge in q)
{
ReturnBadges[i] = new Badge(UserBadge.TheBadge.Key);
ReturnBadges[i].Quantity = UserBadge.BadgeCount;
i++;
}
}
return ReturnBadges;
}
I wish to order by tblBadges.OrderID ascending but I can’t seem to find out where to put it, can anyone help?
I’ve tried:
.OrderBy(c=> c.TheBadge.OrderID)
But it’s not valid code. TheBadge.Key in the loop is a tblBadges type. It’s confusing me a bit why intellisense wont let me do the order by anywhere!
TheBadgeisn’t a single badge, it’s a group of badges… so I’d personally rename it if I were you. Now, whichOrderIddo you want to get? You’ve got multiple entities in the gruop. For example, you could do this:That will order by some notional “first” element – although I don’t know what the generated SQL will look like.
If you expect the
OrderIdto be the same for every badge with the same ID, you might use: