Какая польза от использования пользовательских компараторов в запросах Linq? Являются ли они полезными или просто перегрузкой на сервере.
Так что я говорю о таких запросах, как
IEnumerable<Class> GetMatch(Class comparerObject)
{
return Session.Linq<Class>().Where(x=>new StringComparer<Class>().Equals(x,comparerObject))
}
и вот так выглядит мой класс stringcomparer
public class StringComparer<T> : IEqualityComparer<T>
where T : class, IStringIdentifiable
{
public bool Equals(T x, T y)
{
if (x == null && y == null)
return true;
if (x == null || y == null)
return false;
return x.Id.Equals(y.Id, StringComparison.OrdinalIgnoreCase);
}
Так что мне было интересно, как этот запрос работает с БД? Я думаю, что linq обрабатывает это внутренне, когда отправляет запрос к БД только после того, как все случаи в сравниваются.
Edit:
Ну, если вам трудно поверить, что вышеприведенное не сработает, тогда возьмите простой пример, такой как
return Session.Linq<Class>().Where(x=>x.Id.Equals(comparerObject,StringComparison.InvariantCultureIgnoreCase))
Тогда что вы думаете об ожидаемом поведении?
Спасибо.