c# - LINQ 按空列排序,其中顺序是升序的,空值应该排在最后

标签 c# linq sorting

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

结果集需要按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

最佳答案

尝试将两列放在相同的顺序中。

orderby p.LowestPrice.HasValue descending, p.LowestPrice

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

这应该首先对具有值的那些进行排序,“然后”是值的顺序。

关于c# - LINQ 按空列排序,其中顺序是升序的,空值应该排在最后,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6461479/

相关文章:

c# - 将成员从类列表复制到 C# 中的字符串列表

javascript - 排序 - 将数字和特殊字符移至末尾

sorting - Elasticsearch随机索引排序

c# - 没有 add in linq 语法的定义?

c# - 在 WP8 中打开弹出窗口时,LongListSelector 交互中断

c# - 在 C# 中分配 "unmanaged"内存

c# - LINQ to Entities无法识别: LastOrDefault [duplicate]方法

c# - 在 Controller 'UpTourism' 上找不到与请求匹配的操作。- MVC4 Web api

c# - 接受谓词和 orderby 的存储库方法

perl - 命令行 "sort | uniq -c | sort -n"的替代方案