Некоторые из них уже опубликованы, но я просто хотел сказать, что я видел некоторые из этих нитей, и голоса не соответствуют действительности, что является полезным. ИМО, это список действительно наиболее полезных методов расширения
someCollection.ForEach(i => i.DoSomething());
Это очень и очень полезно, потому что он заменяет встроенный Еогеасп заявление, и мы все знаем, как часто это привыкает.
7.CreateSequence();
Это просто создает последовательность от 0 до 6. Могут быть другие версии, такие как указание начальной точки и шага. Это вторая наиболее полезная функция, потому что она заменяет цикл for. Некоторые люди говорят, что это дублирует функцию Enumerable.Range, что справедливо, но одна из вещей, которые мне нравятся с LINQ является слева направо упорядоченности, так что вы можете сделать что-то вроде этого
myCollection.Where(i => i.Something == somethingElse).Count().CreateSequence(). do something else
Следующая наиболее Полезным является CastTo и As. Опять же они дублируют встроенные функции, но сохраняют порядок слева направо. Обратите внимание, что CastTo отличается от Cast, поскольку CastTo работает с одним объектом.
myObject.CastTo<Person>().DoSomething()
myObject.As<Person>()
Тогда есть SplitAsEnumerable. Это работает так же, как split, но не загружает все в память сразу. Это отлично подходит для синтаксического анализа больших файлов. Он работает с строкой или потоком.
myFileStream.SplitAsEnumerable("\r\n").Select(line => line.SplitAsEnumerable(","))
Последний способ - превратить коллекцию в строку. Это отлично подходит для отображения материала на экране или записи в файлы. например:
myTextBox.Text = "Top 3 scorers are " + myCollection.OrderBy(i => i.Score).Take(3).FlattenToString(i => i.Score.ToString(), ", ");
Отлично! Я люблю это. –
Ваш метод - это в основном повторная реализация Enumerable.Range (http://msdn.microsoft.com/en-us/library/system.linq.enumerable.range.aspx). Разница заключается в том, что Range принимает начало и счет, а ваш занимает от и до. Ваш также идет вразрез с обычной ограничивающей практикой (<), включая high-end (<=). Наконец, он может идти назад, но на практике это редко бывает необходимо. –
+1 Хмм, я не знал, что существует, спасибо за ссылку! Вы правы насчет ограничивающих ... это был всего лишь пример, который я собрал в течение нескольких минут - второй, который вы пытаетесь сделать «0.To (myList.Count)», вы получите исключение. – Pwninstein