동일한 메서드를 사용하여 두 개의 열을 비교하려고합니다. 두 개의 서로 다른 배열에 두 개의 열 저장.C에서 문자열의 두 열을 비교하는 가장 빠른 방법
동일한 작업을 수행하는 빠른 방법이 있으며 두 열이 커질 수 있으므로 효율적인 방법이 필요합니다.
일부 테이블에서 두 개의 열 값을 가져와야합니다. 배열은 값을 유지하거나 다른 구조가 사용해야하는 좋은 아이디어입니다.
감사합니다, Except
LINQ 확장 방법을 사용하여
동일한 메서드를 사용하여 두 개의 열을 비교하려고합니다. 두 개의 서로 다른 배열에 두 개의 열 저장.C에서 문자열의 두 열을 비교하는 가장 빠른 방법
동일한 작업을 수행하는 빠른 방법이 있으며 두 열이 커질 수 있으므로 효율적인 방법이 필요합니다.
일부 테이블에서 두 개의 열 값을 가져와야합니다. 배열은 값을 유지하거나 다른 구조가 사용해야하는 좋은 아이디어입니다.
감사합니다, Except
LINQ 확장 방법을 사용하여
을 속도가 데이터 그러나
// Key (string) - String value
// Value (int) - repeat count
Dictionary<String, int> values = new Dictionary<String, int>();
// Fill values: adding up v1, removing v2
using (IDataReader reader = myQuery.ExecuteReader()) {
while (reader.Read()) {
//TODO: put here the right reader index
String v1 = reader[1].ReadString();
String v2 = reader[2].ReadString();
int repeatCount;
if (values.TryGetValue(v1, out repeatCount))
values[v1] = repeatCount + 1;
else
values[v1] = 1;
if (values.TryGetValue(v2, out repeatCount))
values[v2] = repeatCount - 1;
else
values[v2] = -1;
}
}
// Select out the keys with positive values (where repeat count > 0)
List<String> result = values
.Where(pair => pair.Value > 0)
.Select(pair => pair.Key)
.ToList();
을 가져올 때 대신
Lists/Arrays
의
Dictionary
를 사용할 수있는 모든 우려가있는 경우 , Linq 용액
List<String> result = List1.Except(List2).ToList();
훨씬 더 consize
,
List<string> resultList = SecondList.Except(FirstList).ToList();
이 가장 빠른 방법입니다. 목록의 크기가 약 1000 개 이상으로 증가하더라도? – manu
1000은 크지 않습니다. 그들이 다른지 확인하고 싶습니까? 그렇다면 IEnumerable + count를 사용하여 반복을 저장하십시오.하지만 1000 값이 실질적으로 아무 것도 없으므로 큰 영향을 미치지 않을 것이라고 생각합니다. –
당신은 두 개의 목록을 비교하기위한 Except 기능을 사용할 수 있습니다. 이런 식으로 뭔가 :
List<string> result = list1.Except(list2).ToList();
이 시도 :
List<string> resultList = SecondList.Except(FirstList).ToList();
var arr1 = new string [] { "b1", "b3"};
var arr2 = new string [] { "b1", "b2"};
arr1.SequenceEqual(arr2);
당신이'HashSet의'에서이 값을 저장할 수있는 열의 반복 값이없는 경우입니다; 반복 가능한 값이있는 경우 - 사전. Hashbased 컬렉션은 문제의 배열/목록보다 효율적입니다. –
@ Dmitry Bychenko - 두 열의 값은 반복 가능한 값을가집니다. – manu
데이터베이스가 있습니다. 쿼리에서 비교 만 할 수는 없습니까? –