我有一个字符串值数组{ "Jools", "Jops", "Stoo", "RJ" }
我想订购它,以便"Jops"
在列表中排在第一位,但我不关心其他值的顺序。它也可能是多个值,因此{{1}的所有实例都是如此应首先出现。
使用LINQ有一种简单的方法吗?
答案 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"));