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);

但就是找不到

ObservableCollection在引用相等的情况下查找项匹配

由于found_fishsearch_fishnull,您可以使用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;

对,这是正确的方法。

FindPreciate<Fish>, FirstOrDefaultFunc<Fish, bool>,所以你的签名对两者都有效;两个签名都需要一个Fish,并且返回值为布尔值。

但是既然你真的只是在测试一条给定的鱼是否在你的收藏中,为什么不直接使用Any()

bool searchFishExists = my_observable_collection.Any(f => f == search_fish);