Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/260.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 使用LINQ在OrderBy中自定义排序逻辑_C#_.net_Linq_Sorting_Sql Order By - Fatal编程技术网

C# 使用LINQ在OrderBy中自定义排序逻辑

C# 使用LINQ在OrderBy中自定义排序逻辑,c#,.net,linq,sorting,sql-order-by,C#,.net,Linq,Sorting,Sql Order By,如果我希望以下划线“\u1”开头的项目位于列表底部,那么对字符串列表进行排序的正确方法是什么,否则所有内容都是按字母顺序排列的 现在我在做这样的事情 autoList.OrderBy(a => a.StartsWith("_") ? "ZZZZZZ"+a : a ) 我认为您需要使用并指定自己的实现自定义逻辑的方法。使用OrderBy重载,该重载接受一个IComparer,第一个Func参数将提供给比较器,然后您需要从那里比较字符串。首先处理一个或两个的情况从\uu开始,然后您可能需要从

如果我希望以下划线“\u1”开头的项目位于列表底部,那么对字符串列表进行排序的正确方法是什么,否则所有内容都是按字母顺序排列的

现在我在做这样的事情

autoList.OrderBy(a => a.StartsWith("_") ? "ZZZZZZ"+a : a )

我认为您需要使用并指定自己的实现自定义逻辑的方法。

使用OrderBy重载,该重载接受一个
IComparer
,第一个
Func
参数将提供给比较器,然后您需要从那里比较字符串。首先处理一个或两个的情况从
\uu
开始,然后您可能需要从那里剥离
\u
并只使用标准
字符串。比较
将它们排序到第一个
\u
之外如果您想要自定义排序,但不想提供比较器,您可以使用-sql样式:

autoList
.OrderBy(a => a.StartsWith("_") ? 2 : 1 )
.ThenBy(a => a);

然而,老实说,虽然从技术上讲,你的方法是一种黑客攻击,可能会失败,但它更简单,更容易理解你的意图。我更喜欢这个解决方案。我总是把那件事忘得一干二净。