我想從IEnumerable<Contact>
轉換爲List<Contact>
。我怎樣才能做到這一點?從IEnumerable轉換爲列表
182
A
回答
298
你可以非常簡單地使用LINQ來做到這一點。
確保該使用是在你的C#文件的頂部:
using System.Linq;
然後使用ToList
擴展方法。
例子:
IEnumerable<int> enumerable = Enumerable.Range(1, 300);
List<int> asList = enumerable.ToList();
123
如果你與一個普通的舊System.Collections.IEnumerable
工作IEnumerable<T>
代替你可以使用enumerable.Cast<object>().ToList()
4
我使用的擴展方法這一點。我的擴展方法首先檢查枚舉是否爲空,如果是,則創建一個空列表。這可以讓你對它做一個foreach而不必明確地檢查null。
這裏是一個很做作例如:
IEnumerable<string> stringEnumerable = null;
StringBuilder csv = new StringBuilder();
stringEnumerable.ToNonNullList().ForEach(str=> csv.Append(str).Append(","));
這裏是擴展方法:
public static List<T> ToNonNullList<T>(this IEnumerable<T> obj)
{
return obj == null ? new List<T>() : obj.ToList();
}
4
另一種方式
List<int> list=new List<int>();
IEnumerable<int> enumerable =Enumerable.Range(1, 300);
foreach (var item in enumerable)
{
list.add(item);
}
+0
使用「AddRange(enumerable)」函數或List(可枚舉)構造函數會更好。 – QtRoS
14
如果您使用的System.Collections.IEnumerable
實現你可以像下面這樣做將其轉換爲List
。以下使用Enumerable.Cast方法將IEnumberable
轉換爲通用List
。
//ArrayList Implements IEnumerable interface
ArrayList _provinces = new System.Collections.ArrayList();
_provinces.Add("Western");
_provinces.Add("Eastern");
List<string> provinces = _provinces.Cast<string>().ToList();
如果您使用的通用版本IEnumerable<T>
,轉換爲直線前進。由於兩者都是仿製藥,你可以做類似下面,
IEnumerable<int> values = Enumerable.Range(1, 10);
List<int> valueList = values.ToList();
但如果IEnumerable
爲空,當您嘗試將其轉換爲List
,你會得到 ArgumentNullException
說值不能爲空。
IEnumerable<int> values2 = null;
List<int> valueList2 = values2.ToList();
因此如other answer提到,記得將其轉換爲List
前做一個null
檢查。
相關問題
- 1. 將IEnumerable轉換爲列表
- 2. 從IQueryable轉換爲IEnumerable
- 3. 我想將IEnumerable轉換爲列表或IEnumerable
- 4. 將IEnumerable對象列表轉換爲對象數組列表C#
- 5. 轉換列表的IEnumerable類型
- 6. 轉換成列表的IEnumerable <T>
- 7. 隱式轉換IEnumerable轉換爲泛型
- 8. 將列表從ord轉換爲列表
- 9. 將IEnumerable轉換爲DataTable
- 10. 將IEnumerable轉換爲ObservableCollection
- 11. 無法從IEnumerable <T>轉換爲IEnumerable <T>
- 12. 如何從IEnumerable轉換爲IEnumerable <T>?
- 13. 如何將IEnumerable <IEnumerable <T>>轉換爲列表<string>?
- 14. IEnumerable類從列表集合類型轉換
- 15. 如何將列表<object>轉換爲IEnumerable <T>
- 16. 將IEnumerable <X>轉換爲列表<Y>
- 17. 在.net 2.0中將IEnumerable轉換爲列表<string>
- 18. 轉換IEnumerable的LINQ列表類型列表
- 19. 用列表替換IEnumerable
- 20. 如何正確從IEnumerable <T>轉換爲列表<T>?
- 21. Haskell - 從列表轉換爲Data.Vector
- 22. 從列表轉換爲數字?
- 23. 從列表轉換爲數字
- 24. 從R列表轉換爲數字
- 25. 將MySQL表格從列轉換爲行
- 26. 從列表<float>轉換爲int
- 27. 從ReadOnlyObservableCollection轉換爲列表<MyClass>
- 28. Python:從列表轉換爲字符串
- 29. 從Python轉換爲C列表函數
- 30. 如何IEnumerable的<T>列表轉換爲數據表在C#中
需要注意的是,您的解決方案適用於「IEnumerable」的通用版本。下面用戶pickles的答案處理非通用版本。 – mkmurray
感謝您使用System.Linq; – mili
謝謝@mkmurray我需要密切關注找到「pickles」:D – fabriciorissetto