現時点では使用していますList<int> ints = tuple.Item2.Select(s => s.Value).ToList()
が、tuple.Item2に1000のアイテムがある場合、これは非効率に見えます。これを達成するためのより良い方法はありますか?forループを使用する場合を除きます。
質問する
280 次
2 に答える
7
各要素を1つに変換しList<T1>
、結果を別の要素に格納するための組み込みの方法List<T2>
はですList<T1>.ConvertAll
。
List<int> ints = tuple.Item2.ConvertAll(s => s.Value);
またはとは異なり.Select(...).ToList()
、.Cast(...).ToList()
このメソッドはリストサイズを事前に知っており、.ToList()
回避できない不要な再割り当てを防ぎます。
これが機能するためには、tuple.Item2
本当にである必要がありますList<int?>
。これは拡張メソッドではなく、ジェネリックIEnumerable<int?>
インターフェイスでは機能しません。
于 2012-12-06T06:45:46.513 に答える
2
Cast<>
これを実現するには、Linq を使用するだけです。
List<int> ints = tuple.Item2.Cast<int>();
ただし、要素を TResult 型にキャストできない場合、このメソッドは例外をスローします。例外をキャッチすることを検討する必要があります。
于 2012-12-06T06:34:00.590 に答える