C# 如何根据EF子表中的列对项目进行排序
我有两个表(C# 如何根据EF子表中的列对项目进行排序,c#,entity-framework,linq,C#,Entity Framework,Linq,我有两个表(factoriems和Products),我的factoriems表包含列Id、ProductId、Qty、IsBuy,Products表包含列Id,Name 我想使用代码来选择我的产品,其中我的quaty列有一个值(用于在索引中显示流行产品),并且我有一个外键,从factoriems表中的ProductId列到product表中的Id列 我在ASP.NET MVC中使用虚拟视图模型: model.BestSellersProducts = blProduct.Select().Or
factoriems
和Products
),我的factoriems
表包含列Id、ProductId、Qty、IsBuy
,Products
表包含列Id
,Name
我想使用代码来选择我的产品,其中我的quaty
列有一个值(用于在索引中显示流行产品),并且我有一个外键,从factoriems
表中的ProductId
列到product
表中的Id
列
我在ASP.NET MVC中使用虚拟视图模型:
model.BestSellersProducts = blProduct.Select().OrderByDescending(p => p.FactorItems.Select(c => c.Qty)).take(3);
我从foreach
中的索引中得到此错误:
EntityFramework.SqlServer.dll中发生“System.ArgumentException”类型的异常,但未在用户代码中处理
附加信息:DbSortClause表达式必须具有顺序可比的类型
考虑到您的产品
和factoriem
具有一对零或一
关系,如下所示:
那么,您获得前三名销售产品的查询应如下所示:
List<Product> products = dbContext.Products.OrderByDescending(p => p.FactorItem.Qty).Take(3).ToList();
var productList = dbContext.FactorItems.GroupBy(fi => new { fi.ProductId, fi.Product.Name }).Select(g => new
{
ProductId = g.Key.ProductId,
ProductName = g.Key.Name,
TotalSoldQty = g.Sum(x => x.Qty)
}).OrderByDescending(x => x.TotalSoldQty).ToList();
那么,您获得前三名销售产品的查询应如下所示:
List<Product> products = dbContext.Products.OrderByDescending(p => p.FactorItem.Qty).Take(3).ToList();
var productList = dbContext.FactorItems.GroupBy(fi => new { fi.ProductId, fi.Product.Name }).Select(g => new
{
ProductId = g.Key.ProductId,
ProductName = g.Key.Name,
TotalSoldQty = g.Sum(x => x.Qty)
}).OrderByDescending(x => x.TotalSoldQty).ToList();
可能重复的