Foo().OrderBy(x=> x.Name)
如果我想按照这种方式对集合进行排序,但是只有一个id ==(例如314)的元素应该总是在开头,而不管它的名称如何。Linq - 高级.OrderBy
Foo().OrderBy(x=> x.Name)
如果我想按照这种方式对集合进行排序,但是只有一个id ==(例如314)的元素应该总是在开头,而不管它的名称如何。Linq - 高级.OrderBy
您可以在两轮对其进行排序:
Foo().OrderBy(x => x.Id == 314 ? 0 : 1).ThenBy(x => x.Name)
也许这是更简单
Foo().OrderBy(x => x.Id != 314).ThenBy(x => x.Name)
个人而言,我想这事后处理的(假设布尔值false之前逻辑真留着)客户端,但如果你想要一个LINQ方式,那么我可能会避免Concat
- 这将是一个更复杂的查询。我会去:
int id = 314;
var data = Foo().OrderBy(x => x.Id == id ? 0 : 1).ThenBy(x => x.Name)
布尔假排序。 ILSpy显示,如果值相等,则Boolean.CompareTo'返回0;如果this'为假则返回-1,否则返回1. – user7116
好知道!谢谢。 – jishi