0

BatchedJoinBlock ( http://msdn.microsoft.com/en-us/library/hh194683.aspx ) の結果を並べ替えて、さまざまなターゲットのさまざまな結果をまとめられるようにしたいと考えています。説明します!擬似コードの例:

Dim batchedJoin = New BatchedJoinBlock(Of String, object)(4)
    batchedJoin.Target1.Post("String1Target1")
    batchedJoin.Target2.Post(CType(BuildIt, StringBuilder1))
    batchedJoin.Target1.Post("String1Target2")
    batchedJoin.Target2.Post(CType(BuildIt, StringBuilder2))
Dim results = batchedJoin.Receive()
'This sorts one result...
Dim SortByResult = results.Item1.OrderBy(Function(item) item.ToString, New NaturalStringComparer)

基本的に、文字列とオブジェクトがあります。上記の SortByResult 変数は、文字列を並べ替えたいとおりに並べ替えます。target2 で同じインデックス番号にあったオブジェクトを同じ順序にする方法を探しています。たとえば、「String1Target1」の順序が変更された場合、「StringBuilder1」と一緒に何らかの形で確実に参照/ペアリングしたいと考えています。実際の最終結果は、ソートされる文字列 (target1) によって指定された順序でオブジェクト (target2) がソートされることだけです。何かのようなもの:

   Dim EndResult = results.Item2.OrderBy(strings in target1)

しかし、私は喜んで中間的な解決策を取ります! また、文字列をキーとして辞書 (results.Item2.ToDictionary) を使用してみました (これも適切な解決策です) が、適切なコンテキストでラムバ式を使用することは私の考えを少し超えています。リストなどを使用していくつかのステップで現実的にこれを行うことができますが、より効率的なものを取得しようとしている/何かを学ぼうとしています.joinblockの結果には多くのデフォルトオプションがあるようです.使用するのに十分な経験。ご協力いただきありがとうございます。

4

1 に答える 1

1

BatchedJoinBlock私には、2 つのデータが常に一緒になるため、実際には必要ないように見えます。そのためのより良いオプションはBatchBlockofTuple<string, object>です。それができたら、LINQ を直接使用して各バッチを並べ替えることができます。

results.OrderBy(Function(tuple) tuple.Item1)
于 2013-09-17T00:42:06.837 に答える