【发布时间】:2015-11-06 18:04:51
【问题描述】:
我目前正在为我的一个项目使用 Linq to Sql (dbml)。 (c# win 表格)
我创建了部分类和元数据类,还实现了 Equals() 和 == 基于these Guidelines
我遇到的问题是当我尝试在 linq 查询中使用这些等于操作时。
Entities.MyClass.Where(p => p.Equals(myClassObject));
我也尝试了以下方法
Entities.MyClass.Where(p => Object.Equals(p, myClassObject));
Entities.MyClass.Where(p => p == myClassObject);
实现这一点的最佳方法是什么?
我目前正在执行以下操作,而不是尝试覆盖 Equals(但我正在检查 8 个值,所以看起来很麻烦):
Entities.MyClass.Where(p => p.value1 == myClassObject.value1 && p.value2 == myClassObject.value2 ......)
【问题讨论】:
-
到底是什么问题?您是否遇到错误,或者您只是不喜欢检查 8 个值?
-
比较
Objects时我总是使用经验法则比较值时我使用.Equals方法我使用==比较 -
我假设问题是您的 Linq 提供商不知道如何转换您为实体设置的
Equals或==运算符。通常,您会与主键进行比较,除非您专门测试与某些列匹配的行。 -
是 Linq-to-Objects 查询(即被查询的对象集在内存中)还是 Linq-to-SQL 查询(查询正在针对数据库运行)?
-
您是否正在努力加入?