c从数组中获取不同数组中不存在的元素

本文关键字:数组 不存在 元素 获取 | 更新日期: 2023-09-27 18:21:06

我有两个数组idxListResponse&amp_索引两者具有相同的结构。

这些数组中的每一个都包含许多具有不同属性的元素,其中一个是称为indexdata 的子数组

这个数组的每个元素都有许多属性,其中一个是另一个名为数据字段的数组。这具有许多键值对属性。

所以从本质上讲,我有一个由3个独立数组组成的层次结构。

我希望获得层次结构的第一级+第二级的所有元素,其中第三级项目不匹配,即仅从第二级中排除第三级匹配的项目。

我已经尝试了很多不同的方法来解决这个问题,但到目前为止,我还没有取得任何进展,有人能帮忙吗。

仅供参考-这是我最近一次尝试

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))
            )
        )
    )
);

c从数组中获取不同数组中不存在的元素

Except是一种很好的方法:

var items = source1.Except(source2);

将返回source1中的所有项目,但source2中的项目除外。

由于您的收藏看起来是不同的类型,您可以执行以下操作:

source1.Except(source2.Select(s => /* selector here */))

或者,您可以创建自己的IEqualityComparer实现,并使用它来比较这两种不同的类型。