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# 我如何通过降序,然后使用linq获取一些项目?_C#_Linq_Entity Framework - Fatal编程技术网

C# 我如何通过降序,然后使用linq获取一些项目?

C# 我如何通过降序,然后使用linq获取一些项目?,c#,linq,entity-framework,C#,Linq,Entity Framework,我有以下C LINQ代码: List<myProductList> qMain = ( from m in db.ProductsList.OrderByDescending (it => it.GroupCode == 1 || it.L1 == 1) where m.GoodCode == 1 || m.L1 == 1 select new myProductList { StackAmount

我有以下C LINQ代码:

List<myProductList> qMain = (
 from m in db.ProductsList.OrderByDescending 
                              (it => it.GroupCode == 1 || it.L1 == 1)
 where m.GoodCode == 1 || m.L1 == 1
 select new myProductList
 {
     StackAmount = m.StackAmount,
     GoodCode = m.GoodCode,
     PrivateCodeForSort = m.PrivateCodeForSort,
     GoodMainCode = m.GoodMainCode,
     MaxSellPrice = m.MaxSellPrice,
     SellPrice5 = m.SellPrice5,
     SellPriceType = m.SellPriceType,
     GoodExplain1 = m.GoodExplain1,
     Writer = m.Writer,
     DragoMan = m.DragoMan,
     GoodName = m.GoodName,
     Printing = m.Printing,
     CoverType = m.CoverType,
     PrintYear = m.PrintYear,
     PrintPeriod = m.PrintPeriod,
     Creation = m.CreationDate
 }).Take(50).ToList();
我有一种严重的问题,ProductList表是一个非常大的表,我不想从数据库服务器传输所有的行,所以我解决这个问题的方法是取50行,这是我必须的,但问题是我想先降序,然后取50行,但这段代码先升序取50行,然后降序,只取那些已经存在的50行已经转移和分类了。我如何解决这个问题?

类似这样的问题:

List<myProductList> qMain = (
                         from m in db.ProductsList.OrderByDescending(it => it.GroupCode == 1 || it.L1 == 1) 
                         where m.GoodCode == 1 || m.L1 == 1                                                                                            
                         select new myProductList
                         {
                             StackAmount = m.StackAmount,
                             GoodCode = m.GoodCode,
                             PrivateCodeForSort = m.PrivateCodeForSort,
                             GoodMainCode = m.GoodMainCode,
                             MaxSellPrice = m.MaxSellPrice,
                             SellPrice5 = m.SellPrice5,
                             SellPriceType = m.SellPriceType,
                             GoodExplain1 = m.GoodExplain1,
                             Writer = m.Writer,
                             DragoMan = m.DragoMan,
                             GoodName = m.GoodName,
                             Printing = m.Printing,
                             CoverType = m.CoverType,
                             PrintYear = m.PrintYear,
                             PrintPeriod = m.PrintPeriod,
                             Creation = m.CreationDate
                         }).OrderByDescending(m=>m.GoodName).Take(50).ToList();

它不会带来整个数据集;您可以查看生成的SQL查询进行确认。

否,您给出的代码:

命令结果 过滤结果 预测结果 将结果限制为50 。。。按这个顺序

另一方面,这是一个稍微奇怪的OrderByDescending调用。如果您也希望应用不同的顺序,您也可以轻松地执行此操作-例如:

 from m in db.ProductsList
 orderby (it.GroupCode == 1 || it.L1 == 1) descending, it.SellPrice5 descending
 where m.GoodCode == 1 || m.L1 == 1
 select new myProductList
 ... // code as before

OrderByDescending不是这样工作的-您必须指定您希望它的排序方式。是的,尽管在查询表达式中执行排序会更简单。