2013-10-25 2 views
1

Contains()을 어떻게 사용할 수 있습니까?하지만 배열은 비교 대상입니까? 차이점은 여기 배열의 내용이 같음을 확인해야하며 메모리 주소는이 아닙니다. 어떻게해야합니까? 주문 평등에 대한 문제가되지 않는 경우Array.Contains() 배열을 사용하여 값으로

var array = List<byte[]>(); 
var searchFor = new byte[23]; //has some value in it 
array.Contains(searchFor); //Doesn't work properly 
+1

당신은 사용자 정의 같음 비교를 사용해야합니다 : 여기

은 작업 예입니다. 'Contains()'에 과부하가 있습니다. – svick

+0

나는 @svick이 말한 것과 같이 갈 것이고 아이템이 두 배열에서 같은 순서로 나타나야 만한다면 Jeroen의 대답은 우물쭈물 할 것이다. (나는 여전히 평등 비교자를 무시할 것이다.) – Noctis

답변

3
bool containsArray = array.Any(a => a.SequenceEqual(searchFor)); 

는 :

var orderedSearchFor = searchFor.OrderBy(x => x); 
bool containsArray = 
     array.Any(a => a.OrderBy(x => x).SequenceEqual(orderedSearchFor)); 
+1

네, 고마워요! 아주 좋아. 나는 단순화 편집을 좋아한다, 하하 –

0

선택한 답변에 추가하려면, 이것은 당신이 사용하려는 경우에 따라 또한

  bool found = (from c in array 
         where c.SequenceEqual(searchFor) 
         select c).Count() > 0; 

가능하다 스타일은 LINQ와 비슷합니다.

 var array = new List<byte[]>(); 

     var searchFor = new byte[] { 0xAA, 0xA0 }; 

     array.Add(searchFor); 

     bool found = (from c in array 
         where c.SequenceEqual(searchFor) 
         select c).Count() > 0; 
관련 문제