我将这些数组通过索引关联起来。所以对于每个索引(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查询做到这一点?我不知道如何跟踪索引
你应该能够做到:
var items = ObjIds.Zip(ObjStates, (id, st) => new {Id = id, State = st})
.GroupBy(i => i.Id)
.Select(g => g.First());
Enumerable.Zip
在这里为您将项目"配对"到一个新的匿名类型中,然后将项目分组,并从每个组中选择第一个项目。