Jad*_*ias 0 .net c# linq c#-3.0
我有一组字符串.我想选择包含另一个字符串的所有字符串.但我希望将第一项作为搜索开头的项目,然后按字母顺序排列其他项目.但是以下代码不起作用:
items = items
.Where(a => a.Contains(contained))
.OrderBy(a => a)
;
var startsWith = items.Where(a => a.StartsWith(contained));
items = startsWith.Union(items.Except(startsWith));
Run Code Online (Sandbox Code Playgroud)
我该怎么办?
除了迈克尔的选择,您还可以通过布尔来订购:
items = items.OrderBy(x => !x.Contains(contained))
.ThenBy(x => x);
Run Code Online (Sandbox Code Playgroud)
注意false
事先排序true
!在这里 - 您还可以使用条件来使其更清晰:
items = items.OrderBy(x => x.Contains(contained) ? 0 : 1)
.ThenBy(x => x);
Run Code Online (Sandbox Code Playgroud)
测试程序:
using System;
using System.Linq;
public class Test
{
static void Main()
{
var items = new string[] { "the", "quick", "brown", "fox",
"jumps", "over", "the", "lazy", "dog" };
var query = items.OrderBy(x => !x.Contains("o"))
.ThenBy(x => x);
foreach (string word in query)
{
Console.WriteLine(word);
}
}
}
Run Code Online (Sandbox Code Playgroud)
输出:
brown
dog
fox
over
jumps
lazy
quick
the
the
Run Code Online (Sandbox Code Playgroud)