2014-11-11 2 views
0

개체를 포함합니다 이 세 가지 속성에 대한 일부 값을 검색하고 그 중 하나의 개체를 만듭니다. 예를 들면 다음과 같습니다. ContractSpecialtyInfo item = new ContractSpecialtyInfo {... some values ​​...}내가 이런 클래스가있는 경우 사용자 정의와 방법은

이제 C#이됩니다. 다음과 같은 답변을 알려줄 수 있습니다 :

if(SpecialtyInfo.Contains(item)) 

또는 그를 도와 줄 필요가 있습니까? 방법? 기본적으로 사용자 지정 개체 인 경우 Contain 메서드가 목록에서 작동합니까? 또는 단지 string, int 등의 간단한 데이터 형식으로 작동합니다. 작동하지 않으면 어떻게해야합니까?

+1

합니다. 110) .aspx) MSDN 설명서 – MethodMan

+0

에 대한이 링크를 살펴 보았습니다 [List.Contains] (http://msdn.microsoft.com/en-us/library/bhkz42b3(v=vs.110))의 설명서를 참조하십시오. aspx) - "이 메서드는 IEquatable 의 개체 구현에 정의 된대로 기본 동등 비교자를 사용하여 동등 함을 결정합니다. T (목록의 값 형식)에 대한 Equals 메서드입니다." – crashmstr

답변

3

을 참조를 비교할뿐만 아니라 IEquatable<ContractSpecialtyInfo>을 구현하면 Equals을 무시하거나 IEquatable<ContractSpecialtyInfo>을 구현해야합니다. 대 = : [목록 .Contains 방법 MSDN (http://msdn.microsoft.com/en-us/library/bhkz42b3 (V : 또는 Any를 사용하고 요를 비교하는 방법을 지정

bool contains = SpecialtyInfo 
    .Any(s => s.Sequence == item.Sequence 
      && s.Specialty == item.Specialty 
      && s.Taxonomy == item.Taxonomy); 
+0

Tim, 항상 제 질문에 올바르게 답변 해 주셔서 감사합니다. 내가 필요한 시점까지. – ConfusedSleepyDeveloper

+0

흥미 롭습니다. 따라서 Any() 예제에서 인터페이스를 구현할 필요가 없습니다. 그렇습니까? 그냥 내가 사용하고있는 객체의 값과 LIST에있을 수있는 모든 가능한 객체를 비교하는 것처럼 사용하십시오. – ConfusedSleepyDeveloper

+1

@ConfusedSleepyDeveloper : 아니요, 빠른 접근 방법입니다. –

3

참조로 항목을 비교합니다. 동일한 참조가있는 항목이있는 경우에만 작동합니다. 속성 값을 기준으로 아이템을 비교하려면 클래스에 IEquatable<T>을 구현해야합니다.

+0

감사합니다. 값으로 비교할 필요가 있습니다. 수행 방법에 대한 자세한 정보를 보여 줄 수 있습니까? 감사. – ConfusedSleepyDeveloper

+0

이미 [MSDN의] 예제가 있습니다. (http://msdn.microsoft.com/en-us/library/ms131190 (v = vs.110) .aspx) –

관련 문제