我有一组结果从Linq返回到SQL查询。每个结果都有一个NameSeriesIdSeriesId可以是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/

10-10 22:14