У меня есть класс вроде этого:
public class Order
{
public int Id;
public Person SalesPerson;
...
}
public class Person
{
public int Id;
public string Name;
...
}
Я запросил запрос в LINQ следующим образом:
Order[] orders = GetAllOrders();
var myResult = select o from orders
group o by o.SalesPerson.Id into oGroup
select new {SalesPersonId = oGroup.Key, Order = oGroup}
Он работает правильно. Но я буду группировать объект SalesPerson не на SalesPersonId. Когда я группирую SalesPerson, его группа не корректно, даже интерфейс impelement IEquatable<Person>
, но он не работает. что мне делать?
tanx для вашей помощи.
Да, Бенджамин Подшун прав. Я должен переопределить метод GetHashCode()
.
поэтому мой класс выглядит следующим образом:
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();
}
}
Благодарю вас