如何在LINQ引用类型属性组通过? [英] How to group by on a reference type property in linq?
本文介绍了如何在LINQ引用类型属性组通过?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我有这样一个类:
public class Order
{
public int Id;
public Person SalesPerson;
...
}
public class Person
{
public int Id;
public string Name;
...
}
我所著的查询在LINQ是这样的:
I writed a query in LINQ like this:
Order[] orders = GetAllOrders();
var myResult = select o from orders
group o by o.SalesPerson.Id into oGroup
select new {SalesPersonId = oGroup.Key, Order = oGroup}
这正常工作。但我会在业务员组对象不SalesPersonId。当我按业务员它不是正确组连我教学贯彻 IEquatable<&人GT;
接口,但它不仍然工作。我该怎么办?
It work correctly. But I will group on SalesPerson object not on SalesPersonId. When I group by SalesPerson its not group correctly even I impelement IEquatable<Person>
interface but it doesn't work still. what should I do?
坦对您有所帮助。
推荐答案
哦,是的,本杰明Podszun是对的。我应该重写的GetHashCode()
方法了。
,所以我的班是这样的:
oh yes, Benjamin Podszun is right. I should override GetHashCode()
method too.
so my class is like this:
public class Person : IEquatable<Person>
{
public int Id;
public string Name;
...
public bool Equals(Person other)
{
return other == null ? false : this.Id == other.Id;
}
public override int GetHashCode()
{
return this.Id.GetHashCode();
}
}
感谢您
这篇关于如何在LINQ引用类型属性组通过?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文