迟到所以这可能是一个愚蠢的问题...... 如果Fish是一个类(没有Equal / operator == overrides / overloads),我想从List或ObservableCollection of Fish获得与引用相等匹配的特定鱼,目前我这样做:
Fish found_fish1 = my_list.Find(f => f==search_fish);
Fish found_fish2 = my_observable_collection.FirstOrDefault(f => f==search_fish);
这是最好的方法吗?我期待一个带有鱼的XXXX方法(类似于删除),例如
Fish found_fish = my_observable_collection.XXXX(search_fish);
但似乎无法找到它。
答案 0 :(得分:1)
是的,这是正确的方法。
Find
需要Preciate<Fish>
,FirstOrDefault
需要Func<Fish, bool>
,因此您的签名适用于两者;两个签名都需要一个Fish
,返回值为boolean。
但是,既然你真的只是想测试一下给定的鱼是否在你的收藏中,为什么不用Any()
bool searchFishExists = my_observable_collection.Any(f => f == search_fish);
答案 1 :(得分:1)
由于found_fish
是search_fish
或null
,您可以使用ICollection<T>.Contains
:
Fish found_fish1 =
my_list.Contains(search_fish) ? search_fish : null;
Fish found_fish2 =
my_observable_collection.Contains(search_fish) ? search_fish : null;