Упорядочение списка объектов по 'Sector%', а затем по всему остальному в порядке - PullRequest
1 голос
/ 06 декабря 2010

Сценарий: У меня есть список Секторов, которые сначала должны быть заказаны Сектором, а затем все остальные по порядку.

Пример:

Сектор 1
Сектор 2 Север
Сектор 2 Юг
Все
С
Здесь
Вкл
Заказано

Вопрос: Есть ли способ с LINQ иликаким-то другим способом упорядочить список объектов таким образом?Объект состоит из Sector_ID и Description (имя).

Ответы [ 2 ]

4 голосов
/ 06 декабря 2010

Предполагая, что это LINQ to Objects, это довольно просто:

// False comes before True, IIRC, so we want to a projection such that
// everything which starts with Sector maps to False, and everything else
// maps to True.
var query = list.OrderBy(x => !x.Description.StartsWith("Sector")) 
                .ThenBy(x => x.Description);

Имейте в виду, я, возможно, неправильно понял вопрос. Может быть, вы просто хотите что-то вроде:

var query = list.OrderBy(x => x.SectorId)
                .ThenBy(x => x.Description);

Ваши примеры данных содержат только один столбец, но затем вы говорили о двух ... если бы вы могли дать более подробную информацию в вопросе, было бы легче дать вам полезный ответ.

1 голос
/ 06 декабря 2010

У вас должна быть возможность отсортировать список, предоставив метод сравнения Sort для вашего объекта, который сначала сравнил бы Sector_ID, а затем описание.

...