В случае, если вы хотите сгруппировать по объекту, так как вы не переопределили Equals
и GetHashCode()
в своем классе Article
или внедрили IEqualityComparer<Article>
, вы просто получаете сравнение по умолчанию , который проверяет, равны ли ссылки. Итак, вам нужно что-то вроде этого:
class GroupItemComparer : IEqualityComparer<Article>
{
public bool Equals(Article x, Article y)
{
return x.Id == y.Id &&
x.Name == y.Name;
}
public int GetHashCode(Article obj)
{
return obj.Id.GetHashCode() ^
obj.Name.GetHashCode();
}
}
А затем вам нужно изменить свой запрос на лямбда-выражение:
var groups1 = combinedItems.GroupBy(c => c.article , new GroupItemComparer())
.Select(c => c.Key).ToList();
На случай, если у вас возникло исключение в отношении перевода вашего метода в SQL, вы можете использовать методы AsEnumerable
или ToList
перед вашим методом GroupBy
, с этими методами после загрузки данных любая дальнейшая операция выполняется с использованием Linq to Objects над данными, уже находящимися в памяти.