개체 목록에서 중복을 확인하는 정말 빠른 방법을 찾고 있습니다.개체 목록에서 중복 검사 C#
단순히 목록을 반복하고 수동 비교를 그런 식으로 일을 생각했다,하지만 난 LINQ는 더 우아한 솔루션을 제공 할 수 있다고 생각 ...
나는 객체 ...
한다고 가정해야public class dupeCheckee
{
public string checkThis { get; set; }
public string checkThat { get; set; }
dupeCheckee(string val, string val2)
{
checkThis = val;
checkThat = val2;
}
}
은 내가
List<dupeCheckee> dupList = new List<dupeCheckee>();
dupList.Add(new dupeCheckee("test1", "value1"));
dupList.Add(new dupeCheckee("test2", "value1"));
dupList.Add(new dupeCheckee("test3", "value1"));
dupList.Add(new dupeCheckee("test1", "value1"));//dupe
dupList.Add(new dupeCheckee("test2", "value1"));//dupe...
dupList.Add(new dupeCheckee("test4", "value1"));
dupList.Add(new dupeCheckee("test5", "value1"));
dupList.Add(new dupeCheckee("test1", "value2"));//not dupe
내가 그 목록에 속는을 찾을 필요가 해당 개체의 목록을 가지고있다. 찾으면 일부 논리를 추가로 제거해야합니다. 반드시 제거하지 않아도됩니다.
내가 LINQ를 사용하면 내 GROUPBY가 예외를 던지는 방법을 몇 가지 ...
'System.Collections.Generic.List<dupeCheckee>' does not contain a definition for 'GroupBy' and no extension method 'GroupBy' accepting a first argument of type 'System.Collections.Generic.List<dupeCheckee>' could be found (are you missing a using directive or an assembly reference?)
내가 라이브러리를 놓치고 내게 말하고있다
. 나는 어느 것을 생각하는지 어려움을 겪고있다.
한번 생각해 보면 본질적으로 그 두 가지 조건을 확인하는 방법은 무엇입니까? IE checkThis와 checkThat 모두 두 번 이상 발생합니까?
UPDATE :이 확실히 더 나은 경우
test.Count != test.Select(c => new { c.checkThat, c.checkThis }).Distinct().Count()
내가 확실하지 오전 ...
이 내가 빠른 연구를 수행 한 후 함께 제공되는 LINQ 쿼리입니다 해낸 이 대답보다 ...
나는 첫 번째 문장을 if else 절에 넣을 수 있음을 알고 있습니다. 나는 또한 빠른 테스트를했다. 중복 목록은 내가 0을 기대하고 있었을 때 1을 되 돌렸지 만, 내가 사용한 세트 중 하나에서 중복 된 사실을 정확하게 호출했다. ...
다른 방법론은 내가 기대했던대로 정확하게 수행한다.
List<DupeCheckee> test = new List<DupeCheckee>{
new DupeCheckee("test0", "test1"),//{ checkThis = "test", checkThat = "test1"}
new DupeCheckee("test1", "test2"),//{ checkThis = "test", checkThat = "test1"}
new DupeCheckee("test2", "test3"),//{ checkThis = "test", checkThat = "test1"}
new DupeCheckee("test3", "test3"),//{ checkThis = "test", checkThat = "test1"}
new DupeCheckee("test0", "test5"),//{ checkThis = "test", checkThat = "test1"}
new DupeCheckee("test1", "test6"),//{ checkThis = "test", checkThat = "test1"}
new DupeCheckee("test2", "test7"),//{ checkThis = "test", checkThat = "test1"}
new DupeCheckee("test3", "test8"),//{ checkThis = "test", checkThat = "test1"}
new DupeCheckee("test0", "test5"),//{ checkThis = "test", checkThat = "test1"}
new DupeCheckee("test1", "test1"),//{ checkThis = "test", checkThat = "test1"}
new DupeCheckee("test2", "test2"),//{ checkThis = "test", checkThat = "test1"}
new DupeCheckee("test3", "test3"),//{ checkThis = "test", checkThat = "test1"}
new DupeCheckee("test4", "test4"),//{ checkThis = "test", checkThat = "test1"}
};
없음 속는 ...
List<DupeCheckee> test2 = new List<DupeCheckee>{
new DupeCheckee("test0", "test1"),//{ checkThis = "test", checkThat = "test1"}
new DupeCheckee("test1", "test2"),//{ checkThis = "test", checkThat = "test1"}
new DupeCheckee("test2", "test3"),//{ checkThis = "test", checkThat = "test1"}
new DupeCheckee("test3", "test3"),//{ checkThis = "test", checkThat = "test1"}
new DupeCheckee("test4", "test5"),//{ checkThis = "test", checkThat = "test1"}
new DupeCheckee("test5", "test6"),//{ checkThis = "test", checkThat = "test1"}
new DupeCheckee("test6", "test7"),//{ checkThis = "test", checkThat = "test1"}
new DupeCheckee("test7", "test8"),//{ checkThis = "test", checkThat = "test1"}
new DupeCheckee("test8", "test5"),//{ checkThis = "test", checkThat = "test1"}
new DupeCheckee("test9", "test1"),//{ checkThis = "test", checkThat = "test1"}
new DupeCheckee("test2", "test2"),//{ checkThis = "test", checkThat = "test1"}
new DupeCheckee("test3", "test3"),//{ checkThis = "test", checkThat = "test1"}
new DupeCheckee("test4", "test4"),//{ checkThis = "test", checkThat = "test1"}
};
'System.Linq; '를 cs 파일 맨 위에 추가하면'GroupBy'가 작동합니다. –
예. 그냥 내가 그것을 놓친 걸 알았어. 감사. – SoftwareSavant
Erm 더플은 속량을 가지고 있지 않습니다. test3, test3 –