3

これらの配列をインデックスで関連付けています。したがって、インデックス (ObjId、ObjState) ごとにペアを形成します。

 string[] ObjIds = { "Obj1", "Obj1", "Obj2", "Obj2", "Obj1", "Obj3", "Obj2", "Obj2" };
 string[] ObjStates = { "OS11", "OS12", "OS21", "OS22", "OS13", "OS31", "OS22", "OS23" };

ただし、ObjId ごとに最新のペア (インデックス 0 に最も近い) のみが必要です。

上記の入力の場合、出力は次のようになります。

{  Obj1, OS11 }, {Obj2, OS21}, {Obj3, OS31}

IEnumerable クエリを使用してこれを行うにはどうすればよいですか? インデックスを追跡する方法を理解するのに苦労しています。

4

1 に答える 1

3

あなたはできるはずです:

var items = ObjIds.Zip(ObjStates, (id, st) => new {Id = id, State = st})
                  .GroupBy(i => i.Id)
                  .Select(g => g.First());

Enumerable.Zipここでは、アイテムを新しい匿名タイプに「ペアリング」してから、アイテムをグループ化し、各グループから最初のアイテムを選択します。

于 2013-04-10T20:16:49.927 に答える