我有两个这样的成员列表:
之前:彼得,肯,朱莉娅,汤姆
之后:彼得,罗伯特,朱莉娅,汤姆
正如你所看到的,肯已经出局了,罗伯特也在.
我想要的是检测变化.我想要列出两个列表中已更改的内容.linq怎么能帮助我?
jas*_*son 29
你的问题没有完全明确,但我认为你正在寻找差异作为集合(也就是说,排序无关紧要).如果是这样,您需要两组的对称差异.你可以使用Enumerable.Except以下方法实现:
before.Except(after).Union(after.Except(before));
Run Code Online (Sandbox Code Playgroud)
Nig*_*uch 21
作为linq答案的替代方法,必须两次传递两个列表,使用HashSet.SymmetricExceptWith():
var difference = new HashSet(before);
difference.SymmetricExceptWith(after);
Run Code Online (Sandbox Code Playgroud)
可以更有效率.