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 回答