我有两个数组idxListResponse&_index,它们都具有相同的结构.
这些数组中的每一个都包含许多具有不同属性的元素,其中一个元素是一个名为indexdata的子数组
此数组的每个元素都有许多属性,其中一个属性是另一个名为datafield的数组.这具有许多键值对属性.
所以本质上我有3个独立数组的层次结构.
我希望获得层次结构的第一级+第3级项目不匹配的第二级别的所有元素,即仅排除第3级项目匹配的第2级别的项目.
我尝试过多种不同的方法,但到目前为止,我没有得到任何帮助.
仅供参考 - 这是我的最新尝试
var q = idxListResponse.Index.Where(a =>
a.IndexData.All(b =>
b.DataField.All(c =>
_index.Index.Where(z =>
z.IndexData.All(y => y.DataField.Contains(c.name))
)
)
)
);
Run Code Online (Sandbox Code Playgroud)
vcs*_*nes 31
Except
这是一个很好的方法:
var items = source1.Except(source2);
Run Code Online (Sandbox Code Playgroud)
将返回source1
除中的所有项目source2
.
由于您的集合看起来是不同的类型,您可以执行以下操作:
source1.Except(source2.Select(s => /* selector here */))
Run Code Online (Sandbox Code Playgroud)
或者您可以创建自己的实现,IEqualityComparer
并使用它来比较两种不同的类型.