如何使用LINQ对集合进行排序,以便首先显示特定字符​​串

时间:2014-01-06 10:33:05

标签: c# .net linq

我有一个字符串值数组{ "Jools", "Jops", "Stoo", "RJ" }

我想订购它,以便"Jops"在列表中排在第一位,但我不关心其他值的顺序。它也可能是多个值,因此{{1}的所有实例都是如此应首先出现。

使用LINQ有一种简单的方法吗?

3 个答案:

答案 0 :(得分:10)

怎么样?
var values = new string[] { "Jools", "Jops", "Stoo", "RJ" };
var sortedValues = values.OrderByDescending(s => s.Equals("Jops"));

只需根据您想要的价值进行排序。

编辑在下面的评论中提到一个非常有价值的观点,其余项目未按此机制排序。为了保证他们的订单使用ThenBy()方法。

答案 1 :(得分:1)

我建议使用排序列表并编写自己的Comparer:http://msdn.microsoft.com/en-us/library/system.collections.icomparer(v=vs.110).aspx

答案 2 :(得分:1)

如果您的意思是"Jops"硬编码,那么这样做:

var result = values
    .Where(x => x == "Jops")
    .Concat(values.Where(x => x != "Jops"));

较短的版本:

var result = values
    .OrderByDescending(s => s.Equals("Jops"));