Пример: MyObject - некоторая запись о пользователях, содержащая поля Id, Login и Country, и мы хотим узнать, пользователи из каких стран зарегистрированы в нашей системе.
Нет ничего проще, если ваш язык идеален.
using System.Linq;
// ...
var DifferentCountries = (from userEntry in A.AsQueryable() select new {userEntry.Country}).Distinct().ToList();
За уникальность отвечает именно функция Distinct(). Если она вызывается без параметров, применяется сравнение объектов по умолчанию. Если нам нужен какой-то более мощный признак уникальности, надобно написать своё сравнение. На том же примере со странами покажу как: public class MyUserCountryComparer : IEqualityComparer<User>
{
public bool Equals(User x, User y)
{
return x.Country == y.Country;
}
// Идея в том, что эта функция должна возвращать
// одинаковые значения для одинаковых (по мнению функции Equals())
// объектов и разные для разных. А как - это уже ваше дело.
// Например, так:
public int GetHashCode(User obj)
{
return obj.Country.GetHashCode();
}
}
А применяется эта фигня так:Distinct(new MyUserCountryComparer());
Комментариев нет:
Отправить комментарий