C# リストの変換 リストへ 質問する

C# リストの変換 リストへ 質問する

がありList<int>、それを に変換したいと考えています。 をループして次のように新しい に追加するList<double>以外に、これを行う方法はありますか?List<int>List<double>

List<int> lstInt = new List<int>(new int[] {1,2,3});
List<double> lstDouble = new List<double>(lstInt.Count);//Either Count or Length, I don't remember

for (int i = 0; i < lstInt.Count; i++)
{
    lstDouble.Add(Convert.ToDouble(lstInt[0]));
}

これを行うための優れた方法はありますか? 私は C# 4.0 を使用しているので、回答では新しい言語機能を活用している可能性があります。

ベストアンサー1

あなたできる他の人の提案どおりに使用しますSelectが、以下も使用できますConvertAll:

List<double> doubleList = intList.ConvertAll(x => (double)x);

これには 2 つの利点があります。

  • LINQを必要としないので、.NET 2.0を使用していて、LINQブリッジ、まだ使用できます。
  • より効率的です。ToListメソッドは の結果のサイズを認識しないSelectため、処理中にバッファを再割り当てする必要がある場合があります。 はConvertAllソースと宛先のサイズを認識しているため、すべてを 1 回で実行できます。 また、反復子の抽象化なしでこれを行うこともできます。

欠点:

  • これは と 配列でのみ機能しますList<T>。 プレーンを取得する場合は、と をIEnumerable<T>使用する必要があります。SelectToList
  • プロジェクトで LINQ を頻繁に使用している場合は、ここでも LINQ を使い続ける方が一貫性があるかもしれません。

おすすめ記事