2011-12-02 3 views
0

늦었으므로이 말은 바보 같은 질문 일 수 있습니다 ...
물고기가 클래스 (Equal/연산자 == 무시/과부하가없는 클래스)이고 일치하는 특정 물고기를 얻고 싶다면 물고기 (들)의 목록 또는 ObservableCollection에에서 참조 평등에 현재 내가 할 :ObservableCollection 참조 동등 물에서 일치 항목을 찾습니다.

Fish found_fish1 = my_list.Find(f => f==search_fish); 
Fish found_fish2 = my_observable_collection.FirstOrDefault(f => f==search_fish); 

는 가장 좋은 방법은이 작업을 수행인가요? 나는 (제거 유사) 물고기 예를 들어

Fish found_fish = my_observable_collection.XXXX(search_fish); 

이 필요하지만 단지 그것을 찾을 수가 없어 할 수있는 XXXX 방법을 기대하고 있었다.

+0

질문이 있으시면, 그것이 존재하는지 여부를 아는 것이 전부입니까? search_fish == found_fish 이후로 정말로 found_fish가 필요합니까? –

+0

@JamesMichaelHare 좋은 지적! - 나는 그것이 늦었다 고 언급했다 ... 당신이 대답으로 그것을 넣으면 나는 그것을 받아 들일 것이다. (즉, Contains 만 사용하십시오) – Ricibob

+0

Nah, Rick은 Contains() 공평하고 정교한 :-)을 고맙게 여기며 감사합니다. –

답변

1

중 하나 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; 
+0

감사합니다. – Ricibob

1

예, 올바른 방법입니다.

FindPreciate<Fish>이며, FirstOrDefaultFunc<Fish, bool>입니다. 따라서 서명이 둘 다 작동합니다. 두 서명 모두 단일 Fish을 요구하고 부울 값을 리턴합니다.

하지만 당신은 정말 그냥 주어진 물고기 컬렉션에 있는지 테스트하고 있기 때문에, 왜 그냥 found_fish 이후 Any()

bool searchFishExists = my_observable_collection.Any(f => f == search_fish); 
관련 문제