2014-09-22 4 views
1

Мне нужна помощь в сортировке списка списка по атрибуту во внутреннем списке.Сортировать список из списка C#

List<List<int>> Nota = new List<List<int>>(); 
Nota.Add(new List<int> { 0,1,3,4}); 
Nota.Add(new List<int> { 0,3,3,4}); 
Nota.Add(new List<int> { 0,2,3,4}); 

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

{ 0,1,3,4} 
{ 0,2,3,4} 
{ 0,3,3,4} 

после сортировки ..

Я попытался

Nota.OrderByDescending(x => - x[1]); 

но не имеет результатов

спасибо за помощь!

+7

Вопросы, которые являются лишь требования без каких-либо усилий, показанного как правило, не хорошо принят на переполнение стека. Вместо этого покажите (в коде), что было предпринято для решения проблемы и какие проблемы в настоящее время встречаются вместе с конкретным, ответным, объективным вопросом. – tnw

+0

Пожалуйста, разместите соответствующий код, чтобы мы могли видеть, где именно вы застряли. –

+0

Ваш первый блок кода не компилируется. Вам нужен список строк, но вы передаете целые числа. – gunr2171

ответ

4

Вы можете использовать List<T>.Sort:

Nota.Sort((a,b) => a[1].CompareTo(b[1])); 
+0

Что такое a, b? что я сравниваю? –

+0

@JoseMariadelaTorre Это 2 элемента списка. так что 'a' и' b' - это каждый «внутренний список» –

+0

, таким образом, он сравнивает весь список не только с двумя элементами? –

0

Хотя не метод лучше, Nota.OrderByDescending(x => - x[1]); будет работать если вы захватили выход. В отличие от Sort, OrderBy не сортирует список на месте, а возвращает нумератор, который даст вам предметы в желаемом порядке.

Так что-то подобное будет работать:

Nota = Nota.OrderByDescending(x => - x[1]).ToList(); 

или, более просто

Nota = Nota.OrderBy(x => x[1]).ToList(); 
Смежные вопросы