1. ホーム
  2. c#

[解決済み】Linqのスタイル「For Each」【重複あり

2022-04-08 17:20:48

質問

For each"操作のためのLinqスタイルのシンタックスはありますか?

例えば、あるコレクションに基づく値を、すでに存在する別のコレクションに追加します。

IEnumerable<int> someValues = new List<int>() { 1, 2, 3 };

IList<int> list = new List<int>();

someValues.ForEach(x => list.Add(x + 1));

の代わりに

foreach(int value in someValues)
{
  list.Add(value + 1);
}

解決方法は?

ToList()拡張メソッドを使用するのが一番良い方法です。

someValues.ToList().ForEach(x => list.Add(x + 1));

BCLには、ForEachを直接実装する拡張メソッドはありません。


には拡張メソッドはありませんが BCL このようなことをするのは にはまだオプションがあります。 System を追加した場合、その名前空間は リアクティブ・エクステンション をプロジェクトに追加してください。

using System.Reactive.Linq;

someValues.ToObservable().Subscribe(x => list.Add(x + 1));

この結果は、上記の ToList しかし、値を直接デリゲートにストリーミングするので、(理論的には)より効率的です。