The Compare method in Linq lets you find by an IEqualityComparer, but I can't find a counterpart method that allows you retrieve an item by the same comparer.
Is this really the best way to do it?
MyItem myFinderItem = new MyItem(keyField1, keyField2);
if (myList.Contains(myFinderItem, new MyEqualityComparer()))
{
MyItem myRealItem = myList.Single(item => new MyEqualityComparer().Equals(item , myFinderItem));
}
(I'm sharing the usage of the IEqualityComaprer with a call to the Except Linq method and I'd like to maintain a single source for equality comparisons)
Edit: What I'm looking for a method that has the signature:
T Find<T>(T t, IEqualityComparer<T> comparer)
Edit2: I guess this works, it's funky. but it's horrible and would never use it:(
myList.Intersect( new List<MyItem>{myFinderItem}, comparer).Single();