我将这些数组与索引相关联。所以对于每个索引(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查询执行此操作?我无法弄清楚如何跟踪索引。
答案 0 :(得分:3)
你应该可以这样做:
var items = ObjIds.Zip(ObjStates, (id, st) => new {Id = id, State = st})
.GroupBy(i => i.Id)
.Select(g => g.First());
这里使用 Enumerable.Zip
将您的项目“配对”为新的匿名类型,然后将项目分组,并从每个组中选择第一项。