2011-01-14 4 views

ответ

6

Вы можете отсортировать массив с помощью.

var sortedstrings = myStringArray.OrderBy(s => s); 

Это вернет экземпляр Ienumerable. Если вам нужно сохранить его как массив, используйте этот код.

myStringArray = myStringArray.OrderBy(s => s).ToArray(); 

Я не уверен, что вы имеете в виду, когда вы сказали, что вы должны реализовать несколько интерфейсов, но вы не должны делать это при использовании IEnumerable.OrderBy. Просто передайте Func<TSource, TKey> в форме лямбда-выражения.

+0

ОК, но что это такое? – aharon

+0

@aharon: Это параметр выражения лямбда. Если вы собираетесь изучить LINQ, вам нужно узнать о различных функциях с C# 3. –

+0

Nit: вы не передаете 'Predicate ' в OrderBy - вы передаете 'Func '. –

2

OrderBy не будет сортировать существующий массив на месте. Если вам нужно это сделать, используйте Array.Sort.

OrderBy всегда возвращает новую последовательность - что, конечно, вы можете преобразовать в массив и сохранить ссылку в исходной переменной, как в ответ Ойвид в.

2

Сортировка внутри существующий массив, звонок Array.Sort(theArray).

Повторите свой комментарий по интерфейсам: здесь вам не нужно добавлять какие-либо интерфейсы, так как string хорошо поддерживается; но для пользовательских типов (самостоятельно) вы можете реализовать IComparable/IComparable<T>, чтобы включить сортировку. Вы можете также сделать то же самое в IComparer/IComparer<T>, если вы хотите (или нуждаетесь) код, который обеспечивает, чтобы заказ был отдельным для самого типа.

0

Linq имеет два (синтаксических) способа сортировки массива строк.

1:

string[] sortedStrings = unsortedStrings.OrderBy(s => s).ToArray(); 

Этот синтаксис использует Lambda Expressions, если вы не знаете, что s => s средства.

2:

sortedStrings = (from strings in unsortedStrings 
       orderby strings 
       select strings).ToArray(); 

Этот пример выглядит немного как SQL заявление и, вероятно, легче читать, если вы новичок в Linq.

ToArray() преобразует IOrderedEnumerable<string> в качестве string[] в этом случае.

+0

Какой тип является несортированным? Я пробовал со строкой [], не работал ...? – BerggreenDK

+0

string [] test = new [] {"3", "1", "c"}; должны работать без проблем. Вам нужно включить пространство имен System.Linq – hwcverwe

Смежные вопросы