ObservableCollection在引用相等的情况下查找项匹配
本文关键字:查找 情况下 引用 ObservableCollection | 更新日期: 2023-09-27 18:16:40
现在很晚了,所以这可能是一个愚蠢的问题…
如果Fish是一个类(没有相等/操作符==覆盖/重载),并且我想从Fish(es)的List或ObservableCollection中获得一个匹配引用相等的特定鱼(es)当前我这样做:
Fish found_fish1 = my_list.Find(f => f==search_fish);
Fish found_fish2 = my_observable_collection.FirstOrDefault(f => f==search_fish);
这是最好的方法吗?我期待一个XXXX方法,它需要一个鱼(类似于Remove) eg
Fish found_fish = my_observable_collection.XXXX(search_fish);
但就是找不到
由于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;
对,这是正确的方法。
Find
取Preciate<Fish>
, FirstOrDefault
取Func<Fish, bool>
,所以你的签名对两者都有效;两个签名都需要一个Fish
,并且返回值为布尔值。
但是既然你真的只是在测试一条给定的鱼是否在你的收藏中,为什么不直接使用Any()
bool searchFishExists = my_observable_collection.Any(f => f == search_fish);