gpt4 book ai didi

c# - 比较实体时,除了在 linq 中如何工作?

转载 作者:太空宇宙 更新时间:2023-11-03 13:08:19 24 4
gpt4 key购买 nike

假设我有名为 X 的实体模型及其名为 Y 的列表 = X 类型的列表。
如果我有另一个相同类型的列表,称为 Z = X 类型的列表。

每个 X 都是一个实体,其主键名为 Id。

如果我更改了 Z 中的一些值并执行了下一个:

var w = y.Except(z);

(当然 z 只有 x 列表中的一些项目)。

Except的默认比较器是否使用主键来获取找到的项目在 X 中而不是在 Z 中,还是要比较整个属性值?

最佳答案

由于您正在处理 List,因此 Except 在内存中执行并使用 Except可枚举的方法。

可枚举使用 DefaultComparer然后检查类型是否为 T实现 System.IEquatable<T>接口(interface),如果是,则返回 EqualityComparer<T>使用该实现的。否则,它返回 EqualityComparer<T>。使用 Object.Equals 的覆盖和 Object.GetHashCodeT 提供.

因此,它是否实现了 IEquatable<T> 取决于您的类型接口(interface)或覆盖 EqualsGetHashCode方法。

关于c# - 比较实体时,除了在 linq 中如何工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30028574/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com