IEnumerableをリストにキャストすることが可能かどうか疑問に思っていました。各項目をリストにコピーする以外の方法はありますか?IEnumerableをにキャストする<T>
答えて
すでに提案したように、yourEnumerable.ToList()
を使用してください。 IEnumerable
を列挙し、内容を新しいList
に格納します。 IEnumerable
が遅延要素を生成している可能性があるため、必ずしも既存のリストをコピーしているとは限りません。
これはまさに他の答えが示唆しているものですが、より明確です。
public static List<TSource> ToList<TSource>(this IEnumerable<TSource> source)
{
if (source == null)
{
throw Error.ArgumentNull("source");
}
return new List<TSource>(source);
}
.ToList()メソッドを使用します。
yourEnumerable.ToList();
をSystem.Linqのを使用して利用できない場合は、:)がありません。これは完全に受け入れられた答えでなければなりません... – CodingYourLife
いいえ、あなたは参照がリストへの参照であることを確信している場合、あなたは
このようなList<int> intsList = enumIntList as List<int>;
あなたが間違っていると例外をスローするように、それはリストへの参照です。あなたがそれが*リスト*
「if(intsList == null)intsList = new List
を変換することができ、コピーする必要があり、新たなリストを作成し、その初期化子に古いのIEnumerableを渡します。
IEnumerable<int> enumerable = GetIEnumerable<T>();
List<int> list = new List<int>(enumerable);
それもリストをコピーしています.. –
とにかくコピーが必要です。 – Shimmy
他の人が示唆したように、単に列挙オブジェクト上ToList()
メソッドを使用します:あなたのIEnumerable
オブジェクトはToList()
メソッドを持っていない場合は、
var myList = myEnumerable.ToList()
をしかし、あなたは確認することができますので、ここでは解体ですあなたは、次のようなエラーを取得している:
「IEnumerableを」が「ToListメソッド」
の定義が含まれていません。あなたはおそらくそれを追加しますので、System.Linq
名前空間を逃している
:
using System.Linq
- 1. `IEnumerable <Unknown T>`を `IEnumerable <Whatever>`にキャストする方法
- 2. IEnumerableからIEnumerableへのキャスト<object>
- 3. キャストIEnumerable <T>ランタイムタイプ
- 4. IEnumerable <Object>からIEnumerableへのキャスト<string>
- 5. オブジェクトをIEnumerable <object>にキャストしますか?
- 6. IEnumerable <struct>をIEnumerable <object>としてキャストできないのはなぜですか?
- 7. 受信したオブジェクトをList <object>またはIEnumerable <object>にキャスト
- 8. 暗黙のキャストIEnumerableジェネリック型
- 9. 重複したIEnumerableを削除するIEnumerable <IEnumerable <T>>
- 10. を比較するIEnumerable <T>をIEnumerable <IEnumerable <T>>効率的に
- 11. 入れ子のインターフェイス:IDictionary <TKey、IEnumerable <TValue>>にIDictionary <TKey、IList <TValue>>をキャストしますか?
- 12. Transform IEnumerable <Dto> to IEnumerable <ViewModel>
- 13. IEnumerableをIEnumerableに変換する<T>
- 14. ラムダでキャストするか、IEnumerableをキャストする必要がありますか?
- 15. Mapper.Map <タスク<IEnumerableを<Address>>、タスク<IEnumerableを<AddressView>>()
- 16. 型引数Enumerable.Zip(IEnumerableを 'Enumerable.Zip <TFirst、TSecond、TResult>(<TSecond> IEnumerableを、<TFirst> IEnumerableを、funcが<TFirst、
- 17. リストから選択する方法<IEnumerable <ItemClass>>〜IEnumerable <ItemClass>?
- 18. IEnumerableを<TParent>
- 19. List <IEnumerable <ProductViewModel >>を<IEnumerable <ProductViewModel >>に変換する方法は?
- 20. 明示的なキャストは存在しますが、Dictionary <int、string []>をIDictionary <int、IEnumerable <string>>
- 21. IEnumerable <T>リストをバインドリスト<t>にキャストできないのはなぜですか?
- 22. IEnumerableとIEnumerableの違い<T>?
- 23. LINQのマージリスト<IEnumerable <T>>をある規則で1つのIEnumerable <T>に変換します
- 24. IEnumerable <foo>のリストをリストに変換する<string>
- 25. IEnumerableをロードする<XElement>コレクション
- 26. を型「のIEnumerableを<>」
- 27. IEnumerableを<T>質問
- 28. Kerberos TGTの動作
- 29. ラムダ型をint => IEnumerable <string>> int =>タスク<IEnumerable <string> >>に変換しますか?
- 30. 2つのIEnumerable <T>を新しいIEnumerable <T>に連結する方法はありますか
IEnumerableがnullではなく空の場合はエラーをスローしますか? –