49

にキャストすることは可能かと思いIEnumerableましたList。各アイテムをリストにコピーする以外にそれを行う方法はありますか?

4

6 に答える 6

61

すでに提案されているように、 を使用しますyourEnumerable.ToList()。あなたの を列挙しIEnumerable、内容を新しい に保存しますListIEnumerable要素を遅延生成している可能性があるため、必ずしも既存のリストをコピーしているわけではありません。

これはまさに他の回答が示唆していることですが、より明確です。ここに分解がありますので、確認してください。

public static List<TSource> ToList<TSource>(this IEnumerable<TSource> source)
{
    if (source == null)
    {
        throw Error.ArgumentNull("source");
    }
    return new List<TSource>(source);
}
于 2009-06-07T07:27:38.540 に答える
43
using System.Linq;

.ToList()メソッドを使用します。System.Linq名前空間にあります。

var yourList = yourEnumerable.ToList();

https://docs.microsoft.com/en-us/dotnet/api/system.linq?view=netcore-2.2

于 2009-06-07T07:10:38.590 に答える
2

新しいリストを作成し、古いIEnumerableをその初期化子に渡します。

    IEnumerable<int> enumerable = GetIEnumerable<T>();
    List<int> list = new List<int>(enumerable);
于 2009-06-07T07:13:02.407 に答える
0

いいえ、コピーする必要があります。参照がリストへの参照であることが確実な場合は、次のように変換できます

List<int> intsList = enumIntList as List<int>;
于 2009-06-07T07:12:06.370 に答える