Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/302.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何根据EF子表中的列对项目进行排序_C#_Entity Framework_Linq - Fatal编程技术网

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();
可能重复的