Ste*_*ood 14 linq list duplicates c#-4.0
我有两个清单:
List A {A, B, C, D}
List B {A, E, F, G}
Run Code Online (Sandbox Code Playgroud)
我需要制作三个列表:
一个只有列表A中的项目
(B,C,D)
一个只有列表B中的项目
(E,F,G)
一个与两个项目
(一个)
鉴于列表实际上是注册表项,可能会有大量的注册表项,因此如果我选择使用传统的ForEach或For(int i ...)方法,我可以预见到巨大的性能开销.
如果他们能有效地完成这项工作,我并不反对这些,但我更愿意使用Linq.
有没有人有任何想法?
我不关心相同的记录.
我已经创建了一个IEquatable<>将比较元素的类,但它是如何使用它来创建我正在努力的所需输出.
提前致谢.
顺便说一句,我使用VS2012与.NET 4.5
Rom*_*kar 19
var A = new List<string>() { "A", "B", "C", "D" };
var B = new List<string>() { "A", "E", "F", "G" };
A.Except(B).ToList()
// outputs List<string>(2) { "B", "C", "D" }
B.Except(A).ToList()
// outputs List<string>(2) { "E", "F", "G" }
B.Intersect(A).ToList()
// outputs List<string>(2) { "A" }
Run Code Online (Sandbox Code Playgroud)
使用LINQ
listA.Except(listB)
Run Code Online (Sandbox Code Playgroud)
这将为listA中的所有项目提供不在listB中的项目.
对于类似的
listA.SequenceEqual(listB)
Run Code Online (Sandbox Code Playgroud)