c# – 使用LINQ有条件地更改List项的顺序

我得到一个包含LINQ表达式的项目列表,
var list = (from p in listData
            orderby p.Code ascending
            select new keyvaluePair<int,string>(p.Code,p.DESC)
            ).distinct<keyvaluePair<int,string>>().ToList<keyvaluePair<int,string>>();

我把列表作为,

2,MEDICAL
5,RETAIL
6,OTHER
7,GOVT

代码订购

现在,我的预期结果如下,RETAIL 7,GOVT 6,OTHER

我知道我可以通过修改包含这些值的sql表或通过向表中添加额外的数字列来指定序列顺序来获得预期的结果.

是否有可能在没有修改表的情况下在LINQ的帮助下获得结果?

解决方法

所以你想让OTHER处于最后位置?
from p in listData
orderby p.DESC == "OTHER" ascending,p.Code ascending

这是有效的,因为true是“高”而不是假,也许你觉得这更可读:

orderby p.DESC == "OTHER"  ? 1 : 0 ascending

相关文章

目录简介使用JS互操作使用ClipLazor库创建项目使用方法简单测...
目录简介快速入门安装 NuGet 包实体类User数据库类DbFactory...
本文实现一个简单的配置类,原理比较简单,适用于一些小型项...
C#中Description特性主要用于枚举和属性,方法比较简单,记录...
[TOC] # 原理简介 本文参考[C#/WPF/WinForm/程序实现软件开机...
目录简介获取 HTML 文档解析 HTML 文档测试补充:使用 CSS 选...