검색 기능의 결과 인 데이터베이스에서 많은 데이터를 얻었습니다. 이제 List<string[]>
중복 된 유형의 요소가 string[]
있습니다. string[]
목록의 검색 결과입니다.
새로 생성 된 모든 배열에는 다른 인스턴스가 있으므로 사용할 수 없습니다 MyListOfArrays.Distinct().ToList()
.
아주 기본적인 질문 일 수도 있습니다 ...
내 질문은 중복 된 string[]
양식 을 제거하기 위해 내장 된 기능 이 List<string[]>
있습니까? 아니면 내가 직접 써야하나요?
감사합니다
distinct
사용자 정의 equalityComparer와 함께 메소드를 사용할 수 있습니다.
IEnumerable<string[]> distinct = inputStringArrayList.Distinct(new EqualityComparer());
EqualityComparer
class EqualityComparer : IEqualityComparer<string[]>
{
public bool Equals(string[] x, string[] y)
{
if (x.Length != y.Length)
{
return false;
}
if (x.Where((t, i) => t != y[i]).Any())
{
return false;
}
return true;
}
public int GetHashCode(string[] obj)
{
return obj.GetHashCode();
}
}
Alternative Equals 방법
public bool Equals(string[] x, string[] y)
{
return x.SequenceEqual(y);
}
여기에서는 동일한 인덱스에서 동일한 내용을 가진 똑같은 문자열 배열을 가지고 있다고 가정합니다.
public int GetHashCode(string[] obj)
{
if (obj == null)
return 0;
int hash = 17;
unchecked
{
foreach (string s in obj)
hash = hash*23 + ((s == null) ? 0 : s.GetHashCode());
}
return hash;
}
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다