Я работаю с большим набором данных точек интереса (POI), которые имеют значения Lat / Long.
Я хочу отфильтровать POI, которые находятся в непосредственной близости друг от друга. Я думаю, что для достижения этого я могу округлить широту / долготу до X десятичных знаков и сгруппировать по результатам (или позвонить Distinct()
или что-то еще) ...
Я написал небольшое заявление LINQ, которое, кажется, не выполняет то, что я хочу,
var l1 = (from p in PointsOfInterest where p.IsVisibleOnMap select p).Distinct(new EqualityComparer()).ToList();
, где EqualityComparer
равно
public class EqualityComparer : IEqualityComparer<PointOfInterest>
{
public bool Equals(PointOfInterest x, PointOfInterest y)
{
return Math.Round(x.Latitude.Value, 4) == Math.Round(y.Latitude.Value, 4) &&
Math.Round(x.Longitude.Value, 4) == Math.Round(y.Latitude.Value, 4);
}
public int GetHashCode(PointOfInterest obj)
{
return obj.GetHashCode();
}
}
но метод Equals никогда не вызывается?!?
Есть какие-нибудь мысли о том, как это сделать?