Как и вариант Майкла, вы также можете заказать по логическому:
items = items.OrderBy(x => !x.Contains(contained))
.ThenBy(x => x);
Обратите внимание, что false
сортирует перед true
, следовательно,! здесь - вы также можете использовать условное выражение, чтобы сделать его более понятным:
items = items.OrderBy(x => x.Contains(contained) ? 0 : 1)
.ThenBy(x => x);
Тестовая программа:
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);
}
}
}
Выход:
brown
dog
fox
over
jumps
lazy
quick
the
the