gpt4 book ai didi

c# - LINQ 查询我可以在 where 条件下将对象类型属性与另一个对象匹配吗

转载 作者:太空狗 更新时间:2023-10-30 01:17:20 24 4
gpt4 key购买 nike

我有一个对象 BankAccount,我想在 LINQ 查询中检查它是否匹配。

还有另一个对象 LenderAccount,它引用了 BankAccount 实体。

最后一个对象 LoanConnection 引用了 LenderAccount。我正在寻找具有特定 BankAccount 的所有连接。

代码如下:

var bankAccount = accountService.GetBankAccountById(1);
var lenderCons = lenderConnectionService.List().Where(c => c.LenderAccount.BankAccount == bankAccount).ToList();

以上查询似乎有效。但我认为在 LINQ 中我们需要使用基本数据类型(如:整数、字符串、 double 等)检查 where 条件,如下面的代码。

var bankAccount = accountService.GetBankAccountById(1);
var lenderCons = lenderConnectionService.List().Where(c => c.LenderAccount.BankAccount.Id == bankAccount.Id).ToList();

我在这里做错了什么,或者在 LINQ 中是否允许使用 == 运算符在 where 条件下检查对象类型属性?

最佳答案

LINQ where 语句只是将集合中的每个对象与您的 bankAccount 进行比较。是的,您可以在此声明中使用任何类型。

但在您的代码中,它只比较对象的链接。这是引用类型的默认行为。
我认为,目前,引用是对同一个对象,并且一切正常。但是在内存中创建对象并链接到它们,这是一个 CLR 的工作,它可能会因版本而异。

因此,我建议您为您的 BankAccount 类型实现覆盖的比较方法(MSDN 解释和示例)。您无法知道对象是否引用内存中的同一个对象。

并且,在覆盖比较中,您将需要手动检查 id 是否相等。然后你可以使用通常的对象比较(你的第一个例子)而不用猜测它是否有效。

关于c# - LINQ 查询我可以在 where 条件下将对象类型属性与另一个对象匹配吗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32110193/

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