C#:你如何检查列表是否具有相同的大小和相同的元素?

And*_*rko 6 .net c# linq algorithm

有两个字符串列表

List<string> A;
List<string> B;
Run Code Online (Sandbox Code Playgroud)

您建议检查A.Count == B.Count和B中A的每个元素的最短代码是什么,反之亦然:每个B都在A中(A项和B项可能有不同的顺序).

Jon*_*eet 25

如果您不需要担心重复:

bool equal = new HashSet<string>(A).SetEquals(B);
Run Code Online (Sandbox Code Playgroud)

如果你担心重复,那就会变得更加尴尬.这会有效,但速度相对较慢:

bool equal = A.OrderBy(x => x).SequenceEquals(B.OrderBy(x => x));
Run Code Online (Sandbox Code Playgroud)

当然,您可以通过先检查计数来提高两个选项的效率,这是一个简单的表达式.例如:

bool equal = (A.Count == B.Count) && new HashSet<string>(A).SetEquals(B);
Run Code Online (Sandbox Code Playgroud)

...但是你要的是最短的代码:)