IEnumerable<Contact>
からList<Contact>
に変換したいと思っています。これどうやってするの?IEnumerableからListへの変換
答えて
これは、LINQを使用して非常に簡単に行うことができます。
これは、使用していることを確認しますが、あなたのC#ファイルの先頭にある:
using System.Linq;
その後ToList
拡張メソッドを使用します。
例:
IEnumerable<int> enumerable = Enumerable.Range(1, 300);
List<int> asList = enumerable.ToList();
あなたは、私は、このための拡張メソッドを使用しenumerable.Cast<object>().ToList()
を使用することができます代わりにIEnumerable<T>
のSystem.Collections.IEnumerable
定期的に古いで作業している場合。私の拡張メソッドはまず、列挙がヌルかどうかを調べ、空のリストを作成するかどうかを調べます。これにより、明示的にnullをチェックする必要なく、foreachを実行できます。ここで
は非常に不自然な例です:あなたはあなたSystem.Collections.IEnumerable
の実装を使用している場合
public static List<T> ToNonNullList<T>(this IEnumerable<T> obj)
{
return obj == null ? new List<T>() : obj.ToList();
}
別の方法
List<int> list=new List<int>();
IEnumerable<int> enumerable =Enumerable.Range(1, 300);
foreach (var item in enumerable)
{
list.add(item);
}
"AddRange(enumerable)"関数またはList(列挙可能)コンストラクタを使用する方が良いです。 – QtRoS
:ここ
IEnumerable<string> stringEnumerable = null;
StringBuilder csv = new StringBuilder();
stringEnumerable.ToNonNullList().ForEach(str=> csv.Append(str).Append(","));
は、拡張メソッドであります次のようにして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
がnullの場合はList
に変換しようとしたとき、あなたは値がnullにすることはできませんと言って ArgumentNullException
を取得します
IEnumerable<int> values2 = null;
List<int> valueList2 = values2.ToList();
したがってother answerで述べたように、List
にそれを変換する前にnull
チェックを行うことを忘れないでください。
あなたのソリューションは、ジェネリックバージョンのIEnumerableで動作することに注意することが重要です。下のユーザーのピクルスからの答えは非ジェネリック版を扱います。 – mkmurray
ありがとうございます "using System.Linq;" – mili
ありがとう@mkmurray私は "ピクルス"を見つけるために細心の注意を払う必要があります:D – fabriciorissetto