一尘不染

LINQ按空列排序,其中顺序升序,并且空值应为最后

c#

我正在尝试按价格对产品列表进行排序。

结果集需要按列从低到高的价格列出产品LowestPrice。但是,此列可以为空。

我可以像这样按降序对列表进行排序:

var products = from p in _context.Products
   where p.ProductTypeId == 1
   orderby p.LowestPrice.HasValue descending
   orderby p.LowestPrice descending
   select p;

// returns:    102, 101, 100, null, null

但是我不知道如何按升序排序。

// i'd like: 100, 101, 102, null, null

阅读 911

收藏
2020-05-19

共1个答案

一尘不染

尝试将两个列按相同的顺序排列。

orderby p.LowestPrice.HasValue descending, p.LowestPrice

否则,每个orderby都是对集合的单独操作,每次都会对其进行重新排序。

这应该先对值排序,然后“对”值排序。

2020-05-19