我应该重写什么方法来使用LINQ Where, Find
本文关键字:LINQ Where Find 重写 什么 方法 我应该 | 更新日期: 2023-09-27 18:18:31
下面是一些示例代码。
我已经创建了自己的类:
public class MyObject {
private string _guid;
public int Value;
// other stuff here...
public MyObject() {
_guid = Guid.NewGuid().ToString();
}
}
我有一些我之前创建的对象和其他对象的列表,例如:
MyObject inputObject = new MyObject();
List<MyObject> myObjects = new List<MyObject>();
我想这样使用它们:
myObjects.Where(mo => mo == inputObject).Sum(fo => fo.Value);
以此类推。(我确信在我的列表中有一个与inputObject具有相同GUID的对象,这只是示例代码)
问题是:
如何在此列表中使用LINQ查找,Where, Sum等?
我应该覆盖哪些方法来通过GUID进行比较,它们应该是什么样子?
使用等价的Equals()方法更好吗?
由于您正在检查==
,因此需要提供==
操作符(这也意味着您需要提供!=
操作符)。否则,将应用引用相等性(因为它是一个类),并且:它不太可能是相同的对象(只有一个是等效的)。
或者,您可以覆盖Equals
并将您的测试更改为使用.Equals
(注意:如果这样做,也要覆盖GetHashCode()
)。
然而,更简单的选择可能是直接检查相关的内部值,即
public string Guid => _guid;
:
.Where(mo => mo.Guid == inputObject.Guid)