Список <Uri>.OrderBy () порядок сортировки на основе Contains ()? - PullRequest
3 голосов
/ 21 сентября 2011

У меня есть стандарт List<Uri>, который содержит краткий список предметов.Я хотел бы перебрать список с помощью foreach (), но хотел бы «довести до верха» те элементы, которые содержат определенное строковое значение, чтобы сначала обработать их.Это возможно с помощью OrderBy () и, что еще лучше, возможно ли это в одной строке?Спасибо!

Ответы [ 3 ]

6 голосов
/ 21 сентября 2011

Вы можете сделать это:

foreach(var uri in uriList.OrderByDescending(uri => uri.ToString().Contains("foo"))
{
    // Use uri
3 голосов
/ 21 сентября 2011

Другие использовали OrderByDescending, который будет работать, но вы попросили использовать OrderBy, поэтому здесь:

yourList.OrderBy(u => u.AbsoluteUri.Contains("somevalue") ? string.Empty : u.AbsoluteUri);
3 голосов
/ 21 сентября 2011

Да. вы можете использовать OrderByDescending(), используя порядок, который возвращает логическое значение - пример:

var results = items.OrderByDescending( x => x.Name=="Herbert").ToList();

В этом случае заказ вернет true для "Герберта" и false для всех других значений. Все true значения будут упорядочены после всех false значений - мы изменим порядок с помощью OrderByDescending() и получим желаемый результат.

Адаптирован к вашему списку Uri и Contains(), который также возвращает логическое значение, это будет означать:

foreach(var uri in uriList.OrderByDescending(x => x.ToString().Contains(someString))
{
   //..
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...