Преобразование из IEnumerable в List

Я хочу конвертировать из IEnumerable в List . Как я могу это сделать?

Вы можете сделать это очень просто с помощью LINQ.

Убедитесь, что это использование находится в верхней части вашего файла C #:

 using System.Linq; 

Затем используйте ToList расширения ToList .

Пример:

 IEnumerable enumerable = Enumerable.Range(1, 300); List asList = enumerable.ToList(); 

Если вы работаете с обычным старым System.Collections.IEnumerable а не с IEnumerable вы можете использовать enumerable.Cast().ToList()

Если вы используете реализацию System.Collections.IEnumerable вы можете сделать следующее, чтобы преобразовать его в List . В следующем IEnumberable используется метод Enumerable.Cast для преобразования IEnumberable в IEnumberable List .

 //ArrayList Implements IEnumerable interface ArrayList _provinces = new System.Collections.ArrayList(); _provinces.Add("Western"); _provinces.Add("Eastern"); List provinces = _provinces.Cast().ToList(); 

Если вы используете универсальную версию IEnumerable , преобразование выполняется прямо. Поскольку оба являются дженериками, вы можете сделать это, как показано ниже,

 IEnumerable values = Enumerable.Range(1, 10); List valueList = values.ToList(); 

Но если IEnumerable имеет значение NULL, когда вы пытаетесь преобразовать его в List , вы получите ArgumentNullException говорящий, что значение не может быть нулевым.

 IEnumerable values2 = null; List valueList2 = values2.ToList(); 

введите описание изображения здесь

Поэтому, как упоминалось в другом ответе , не забудьте выполнить null проверку перед преобразованием в List .

Для этого я использую метод расширения. Мой метод расширения сначала проверяет, является ли перечисление нулевым, и если это создает пустой список. Это позволяет вам делать foreach на нем, явно не проверяя значение null.

Вот очень надуманный пример:

 IEnumerable stringEnumerable = null; StringBuilder csv = new StringBuilder(); stringEnumerable.ToNonNullList().ForEach(str=> csv.Append(str).Append(",")); 

Вот способ расширения:

 public static List ToNonNullList(this IEnumerable obj) { return obj == null ? new List() : obj.ToList(); } 

другой путь

 List list=new List(); IEnumerable enumerable =Enumerable.Range(1, 300); foreach (var item in enumerable ) { list.add(item); } 
  • Как избежать «ConcurrentModificationException» при удалении элементов из «ArrayList» при его повторении?
  • Как преобразовать карту в список на Java?
  • Возможны ли 2-мерные списки в c #?
  • java: (String ) List.toArray () дает ClassCastException
  • объединение большого списка объектов xts
  • ICollection Vs List в платформе Entity Framework
  • Подключить Список к ListBox и увидеть изменения источника данных в ListBox
  • .NET List Concat vs AddRange
  • Список или IList
  • Как создать список фреймов данных?
  • Как проверить, упорядочен ли список?
  • Interesting Posts

    передача массива строк из java в C с помощью JNI

    Улучшила ли Microsoft Windows Scandisk, CHKDSK и Defrag в Windows 7?

    Что мне нужно сделать, чтобы заставить Core Data автоматически переносить модели?

    Лучший способ * уверенно * искать файлы и содержимое в Windows без использования службы индексирования?

    Spark Row для JSON

    Разделить файл архива большого размера в постоянном рабочем пространстве

    Получить n-й символ строки в языке программирования Swift

    Изменчивая переменная в Java

    Согласование нескольких шаблонов

    Excel: как создать несколько строк из одного

    Как исправить неинициализированную постоянную проблему Rake :: DSL на Heroku?

    Использует ли использование async / wait новый stream?

    Инструмент для сбора системной информации?

    Могу ли я навалом перемещать несколько встреч / встреч по перспективам из одной папки в другую?

    Кордова InAppBrowser – Как отключить URL и панель навигации?

    Давайте будем гением компьютера.