Linq OrderBy - убедитесь, что объект, отвечающий определенным условиям, всегда первым - PullRequest
1 голос
/ 19 августа 2011

У меня есть коллекция объектов, давайте представим, что они являются строками:

string[] strings = new[]{"ABC", "AAA", "ADA", "DDB", "OEO"};

Мне нужно выполнить обработку для них, таким образом:

foreach(string s in strings)
{
    //do some stuff here
}

, но я всегда должен бытьубедитесь, что для их обработки в этом примере сначала используется строка «ABC».

Обратите внимание, что, хотя в списке может быть сто строк, они всегда будут уникальными, поэтому никогда не будет двух записей "ABC".

Я пробовал различные варианты использованиярасширение OrderBy (), пока что безуспешно.

Любая помощь очень ценится.


Правка после комментария Даниэля:

Я действительно идиот.То, что я делал, работало нормально, за исключением того, что я делал OrderBy, когда мне нужно было OrderBy Descending ().

foreach(string s in strings.OrderByDescending(s => s.Contains("ABC")))
{
    //do things
}

И это именно то, что я хочу.

Извините за потерю нити.Хотелось бы услышать улучшения, если таковые имеются.

1 Ответ

1 голос
/ 20 августа 2011

Попробуйте:

strings.OrderBy (o => o == "ABC"). ThenBy (o => o);

Это будет порядокспециальная строка, затем сортировка по алфавиту.

...