如何使用LINQ调整结果?

时间:2015-10-20 21:19:07

标签: c# entity-framework linq

从这个LINQ:

var inspectionItems = inspArchive.Select(x => x.InspectionItems);

我在inspectionItems中得到了这个结果:

enter image description here

我的问题是我如何以优雅的方式使用LINQ来生成一个由Id区分的数组上面的inspectionItems结果。

就像那样:

enter image description here

3 个答案:

答案 0 :(得分:2)

您需要SelectMany() LINQ方法:

var inspectionItems = inspArchive.SelectMany(x => x.InspectionItems);

如果您只想要特定属性的不同项目,那么您可以实现相等比较器以查看您的检查类是否相等,然后在方法链的末尾调用.Distinct(myInspectionEqualityComparer),或者您可以执行这样:

var distinctInspectionItems = inspArchive.SelectMany(x => x.InspectionItems)
                                         .GroupBy(i => i.Id)
                                         .Select(group => group.First());

答案 1 :(得分:1)

如果没有看到更多代码,我想您想使用SelectManyDistinct

var inspectionItems = inspArchive.SelectMany(x => x.InspectionItems).Distinct();

答案 2 :(得分:1)

问题不明确,但请检查这是否适合您:

var inspectionItems = inspArchive.SelectMany(x => x.InspectionItems)
                                 .GroupBy(x => x.ID)
                                 .Select(g => g.First())
                                 .ToArray();