具有最小和投影的GroupBy的可枚举查询



我将这些数组通过索引关联起来。所以对于每个索引(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在这里为您将项目"配对"到一个新的匿名类型中,然后将项目分组,并从每个组中选择第一个项目。

最新更新