通过提供示例对象实例在List <T>中查找项目

mar*_*are 2 c# list icollection iequatable

为什么有List<T>.Contains(T)方法但没有List<T>.Find(T)方法?仅Find支持支持谓词的s.如果我们与它的ID属性值填充T的现有实例(但缺少其他属性),为什么我们不能在提供该对象实例的搜索搜索List,特别是当我们已经实现了定制IEquatable<T>T,并想用什么东西在那里.但实际上,我们不能,我们必须重复我们IEquatableFind(predicate)调用中实现的所有内容.

Joe*_*ant 10

你可以打电话给你的IEquatable<T>会员Predicate<T>.那你就不会重复自己了.

MyClass a = new MyClass(); //sample for finding; IEquatable<MyClass>
List<MyClass> list = GetInstances();

MyClass found = list.Find( mc => mc.Equals(a) );
Run Code Online (Sandbox Code Playgroud)