tabanlı bir listeden nesne alma Linq'deki Karşılaştırma yöntemi, bir IEqualityComparer ile bulmanızı sağlar, ancak bir öğeyi aynı karşılaştırıcıyla almanıza olanak tanıyan bir karşı taraf yöntemi bulamıyorum.IEqualityComparer <T>
Gerçekten bunu yapmanın en iyi yolu bu mu?
MyItem myFinderItem = new MyItem(keyField1, keyField2);
if (myList.Contains(myFinderItem, new MyEqualityComparer()))
{
MyItem myRealItem = myList.Single(item => new MyEqualityComparer().Equals(item , myFinderItem));
}
(Linq yöntemine hariç çağrısı ile IEqualityComaprer kullanımını paylaşıyorum ve ben eşitlik karşılaştırmalar için tek bir kaynak oluşturmayı istedik)
Düzenleme: Bakıyorum ne
T Find<T>(T t, IEqualityComparer<T> comparer)
EDIT2: imzaya sahip bir yöntem için bunun korkak var
bu işe yarıyor.
ama bu korkunç ve :(
myList.Intersect(new List<MyItem>{myFinderItem}, comparer).Single();
Öğe bulunamazsa hangi davranışı beklersiniz? – R0MANARMY
@ R0MANARMY: Benim için gerçekten önemli değil, ya geri dönüş ya da atma iyi olurdu. – Greg
Bu soruyla da ilgilenebilirsiniz ('Single' kullanma ve' First 'kullanma arasındaki fark) http://stackoverflow.com/questions/2724096/linq-single-vs-first – R0MANARMY