我有一组结果从Linq返回到SQL查询。每个结果都有一个Name
和SeriesId
。 SeriesId
可以是1到N之间的任何值,
因此,结果可能最初是从数据库中出来的,如下所示(即任何顺序):
FundA1 FundA6 FundA4 FundC6 FundC3 FundC4 FundB2 FundB7 FundB8 FundB6
I need to get these ordered first by Name
, and then by SeriesId
but I need to show SeriesId == 6
first, then the rest in any order.
So for example, I need
**FundA6** FundA1 FundA4 **FundB6** FundB2 FundB7 FundB8 **FundC6** FundC3 FundC4
I know it's possible for me to order by Name
and then SeriesId
by doing this:
return queryable.OrderBy(f => f.Name).ThenBy(s => s.SeriesId));
但这会将
SeriesId
首先按最小值排序。我是否有办法通过指定应按SeriesId
从6开始而不是1的顺序来覆盖此默认功能? 最佳答案
尝试这个:
return queryable.OrderBy(f => f.Name)
.ThenBy(f => f.SeriesId == 6 ? 0 : 1)
.ThenBy(s => s.SeriesId));
这依赖于比“ true”更早的“ false”排序-我认为它将起作用……至少在LINQ to Objects中如此。
关于c# - 如何更改默认的OrderBy功能,使其首先按给定值排序?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/7123484/