次の単純なコード パターンを検討してください。
foreach(Item item in itemList)
{
if(item.Foo)
{
DoStuff(item);
}
}
Parallel Extensions(PE) を使用して並列化したい場合は、次のように for ループ構造を単純に置き換えることができます。
Parallel.ForEach(itemList, delegate(Item item)
{
if(item.Foo)
{
DoStuff(item);
}
});
ただし、PE は、Foo が false であることが判明したアイテムのスレッドに作業を割り当てる不要な作業を実行します。したがって、ここでは中間ラッパー/フィルタリング IEnumerable が合理的なアプローチであると考えていました。同意しますか?もしそうなら、これを達成する最も簡単な方法は何ですか? (ところで、私は現在 C#2 を使用しているので、ラムダ式などを使用しない例が少なくとも 1 つあればありがたいです。)