Итак,.NET 3.0/3.5 предоставляет нам множество новых способов запроса, сортировки и управления данными, благодаря всем опрятным функциям, поставляемым с LINQ. Иногда мне нужно сравнивать пользовательские типы, у которых нет встроенного оператора сравнения. Во многих случаях сравнение действительно просто - что-то вроде foo1.key? = Foo2.key. Вместо того, чтобы создавать новый тип IEqualityComparer для этого типа, могу ли я просто указать сравнение inline с помощью анонимных функций делегатов/лямбда? Что-то вроде:
var f1 = ...,
f2 = ...;
var f3 = f1.Except(
f2, new IEqualityComparer(
(Foo a, Foo b) => a.key.CompareTo(b.key)
) );
Я уверен, что это не работает. Я просто не хочу делать что-то "тяжелым", как целый класс, просто чтобы сказать программе, как сравнивать яблоки с яблоками.