使用LINQ有条件地更改列表项的顺序

时间:2014-03-05 11:03:25

标签: c# linq

我正在获取一个包含以下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

Code

排序

现在,我的预期结果如下,

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

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

是否可以在LINQ的帮助下获得结果而无需修改表格?

1 个答案:

答案 0 :(得分:10)

所以你希望OTHER在最后一个位置?

from p in listData
orderby p.DESC == "OTHER" ascending, p.Code ascending

这可行,因为truefalse“更高”,也许您觉得这更具可读性:

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