排序列表除了LINQ的一个条目

dan*_*iel 15 c# linq sorting

我想订购一个字符串列表,但列表中的一个字符串应始终位于开头且未排序.使用LINQ最简单的方法是什么?

//should be ordered in: first, a,b,u,z:
List<string> l = {"z","u","first","b","a"};  
Run Code Online (Sandbox Code Playgroud)

LINQ中没有prepend方法或其他东西,有吗?

Geo*_*ett 29

l = l.OrderBy(i => i != "first").ThenBy(i => i).ToList();
Run Code Online (Sandbox Code Playgroud)

这里的诀窍是根据有问题的物品是否是您的特殊物品来订购,然后按照您通常的方式按物品订购.

既然您说要订购列表(使用linq),请不要忘记将查询结果分配回列表.


你还问了一个prepend方法,怎么样:

l = new[] { "first" }.Concat(l).ToList();
Run Code Online (Sandbox Code Playgroud)

您可以轻松地将其作为扩展方法:

public static class LinqExtensions
{
    public static IEnumerable<T> Prepend<T>(this IEnumerable<T> query, T item)
    {
        return new[] { item }.Concat(query);
    }
}
Run Code Online (Sandbox Code Playgroud)

称为:

l = l.Prepend("first").ToList();
Run Code Online (Sandbox Code Playgroud)