Сортировать массив строк в C # - PullRequest
3 голосов
/ 14 января 2011

Как мне отсортировать массив строк с помощью функции OrderBy? Я видел, что мне нужно реализовать некоторые интерфейсы ...

Ответы [ 4 ]

6 голосов
/ 14 января 2011

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

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

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

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

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

2 голосов
/ 14 января 2011

Чтобы отсортировать внутри существующего массива, вызовите Array.Sort(theArray).

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

2 голосов
/ 14 января 2011

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

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

0 голосов
/ 14 января 2011

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

1:

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

Этот синтаксис использует лямбда-выражения , если вы не используетене знаю, что значит s => s

2:

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

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...