C# Linq orderby,can';我不知道如何使用它
我有这个功能:C# Linq orderby,can';我不知道如何使用它,c#,asp.net,linq,sql-order-by,C#,Asp.net,Linq,Sql Order By,我有这个功能: /// <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.tblBadgeU
/// <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;
}
但它不是有效的代码<代码>徽章。循环中的键是
tblBadges
类型。我有点困惑,为什么intellisense不让我在任何地方下订单 徽章
不是一个徽章,而是一组徽章。。。如果我是你,我会亲自给它改名。现在,您想获取哪个OrderId
?GROUP中有多个实体。例如,您可以这样做:
var q = db.tblBadgeUsers
.Where(c => c.UserID == UserID)
.GroupBy(c => c.BadgeID)
.Select(c => new { BadgeCount = c.Count(), TheBadge = c })
.OrderBy(x => x.TheBadge.First().OrderId);
这将按一些概念上的“first”元素排序——尽管我不知道生成的SQL是什么样子
如果您希望具有相同ID的每个徽章的OrderId
都相同,则可以使用:
var q = db.tblBadgeUsers
.Where(c => c.UserID == UserID)
.GroupBy(c => new { c.BadgeID, c.OrderID })
.OrderBy(group => group.Key.OrderID)
.Select(c => new { BadgeCount = c.Count(), TheBadge = c });
徽章
不是一个徽章,而是一组徽章。。。如果我是你,我会亲自给它改名。现在,您想获取哪个OrderId
?GROUP中有多个实体。例如,您可以这样做:
var q = db.tblBadgeUsers
.Where(c => c.UserID == UserID)
.GroupBy(c => c.BadgeID)
.Select(c => new { BadgeCount = c.Count(), TheBadge = c })
.OrderBy(x => x.TheBadge.First().OrderId);
这将按一些概念上的“first”元素排序——尽管我不知道生成的SQL是什么样子
如果您希望具有相同ID的每个徽章的OrderId
都相同,则可以使用:
var q = db.tblBadgeUsers
.Where(c => c.UserID == UserID)
.GroupBy(c => new { c.BadgeID, c.OrderID })
.OrderBy(group => group.Key.OrderID)
.Select(c => new { BadgeCount = c.Count(), TheBadge = c });
试试这个:
var q = db.tblBadgeUsers
.Where(c => c.UserID == UserID)
.GroupBy(c => c.BadgeID)
.Select(c => new { BadgeCount = c.Count(), TheBadge = c.Key }) // *mod
.OrderBy(c=> c.TheBadge.OrderID); // * added
在下一行中,徽章是linq系列,而不是徽章本身。您需要c.Key
.Select(c => new { BadgeCount = c.Count(), TheBadge = c })
试试这个:
var q = db.tblBadgeUsers
.Where(c => c.UserID == UserID)
.GroupBy(c => c.BadgeID)
.Select(c => new { BadgeCount = c.Count(), TheBadge = c.Key }) // *mod
.OrderBy(c=> c.TheBadge.OrderID); // * added
在下一行中,徽章是linq系列,而不是徽章本身。您需要c.Key
.Select(c => new { BadgeCount = c.Count(), TheBadge = c })
您在哪里有
Orderby
语句?”但它不是有效的代码。“您在哪一行尝试添加Orderby,错误消息具体是什么?应该是。Orderby(c=>c.OrderID)
?您在哪里有Orderby
语句?”但它不是有效的代码。”您尝试在哪一行添加OrderBy,错误消息具体是什么?应该是.OrderBy(c=>c.OrderID)
?