从这个LINQ:
var inspectionItems = inspArchive.Select(x => x.InspectionItems);
我在inspectionItems中得到了这个结果:
我的问题是我如何以优雅的方式使用LINQ来生成一个由Id区分的数组上面的inspectionItems结果。
就像那样:
答案 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)
如果没有看到更多代码,我想您想使用SelectMany
和Distinct
?
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();