Enumerable.Zip
Linqでの拡張メソッドの使用は何ですか?
55057 次
9 に答える
7
他の人が述べているように、Zip を使用すると、2 つのコレクションを組み合わせて、さらに Linq ステートメントまたは foreach ループで使用できます。
for ループと 2 つの配列が必要だった操作は、無名オブジェクトを使用して foreach ループで実行できるようになりました。
私が発見したばかりの例は、ちょっとばかげていますが、並列化が有益である場合に役立つ可能性があるのは、副作用のある単一行のキュー トラバーサルです。
timeSegments
.Zip(timeSegments.Skip(1), (Current, Next) => new {Current, Next})
.Where(zip => zip.Current.EndTime > zip.Next.StartTime)
.AsParallel()
.ForAll(zip => zip.Current.EndTime = zip.Next.StartTime);
timeSegments は、キュー内の現在のアイテムまたはデキューされたアイテムを表します (最後の要素は Zip によって切り捨てられます)。timeSegments.Skip(1) は、キュー内の次のアイテムまたはピーク アイテムを表します。Zip メソッドは、これら 2 つを Next プロパティと Current プロパティを持つ 1 つの匿名オブジェクトに結合します。次に、Where でフィルター処理し、AsParallel().ForAll で変更します。もちろん、最後のビットは通常の foreach または問題のある時間セグメントを返す別の Select ステートメントである可能性があります。
于 2014-08-15T14:22:45.297 に答える
0
string[] fname = { "mark", "john", "joseph" };
string[] lname = { "castro", "cruz", "lopez" };
var fullName = fname.Zip(lname, (f, l) => f + " " + l);
foreach (var item in fullName)
{
Console.WriteLine(item);
}
// The output are
//mark castro..etc
于 2014-06-05T08:36:49.110 に答える