使用 LINQ 分离出两个相同的集合,但不同的 ID 除外

Separate out two identical collections except for different ids with LINQ

提问人:Waves 提问时间:3/29/2022 更新时间:3/29/2022 访问量:171

问:

我正在尝试生成一种方法,该方法馈送两个数据库(.db)文件,将它们加载到包含各种字符串属性和唯一ID的对象中。

数据库文件是从 LiteDB 实例创建的,在 LiteDB 库方法下分配了一个唯一的 ID,如下所示:

Id = ObjectID.NewObjectId();

我正在尝试获取两个数据库集合之间不同的所有项目,但不幸的是,我尝试的任何 LINQ 查询都会失败,因为 ID 始终是唯一的,尽管对象中包含的所有其他值都是相同的。

我想执行一个 LINQ 查询,该查询将忽略对象中的 ID 字段,但对该对象中的所有其他属性进行比较,但我正在努力这样做

我最初的想法是使用

var differences = items1.Except(items2)

但是,由于 ID 不同,这会将所有项目填充到差异集合中。

关于如何排除 ID 比较的任何建议将不胜感激,该工具可用于数百万条记录,因此需要高效。

C# LINQ 集合 比较 LiteDB

评论


答:

2赞 Quacke 3/29/2022 #1

Except具有接受 .可以在类中以忽略 ID 的方式实现此接口,然后将该类的实例传递给该方法。如果您需要有关如何实现 的参考,请参阅此示例IEqualityComparer<T>IEqualityComparer<T>