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

标签 c# .net linq algorithm

有两个字符串列表

List<string> A;
List<string> B;

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

最佳答案

如果您不需要担心重复:

bool equal = new HashSet<string>(A).SetEquals(B);

如果您担心重复,那就有点尴尬了。这会起作用,但速度相对较慢:

bool equal = A.OrderBy(x => x).SequenceEquals(B.OrderBy(x => x));

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

bool equal = (A.Count == B.Count) && new HashSet<string>(A).SetEquals(B);

...但是您要求的是最短的代码:)

关于C#:如何检查列表的大小和元素是否相同?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4266537/

相关文章:

c# - 调用此接口(interface)时遇到问题

c# - 在 .Net 中为复数形式附加 's' 的巧妙方法(语法糖)

.net - Nullable<Int32> 的大小是多少?

c# - 使用 Linq 在两个日期之间重叠记录

c# - 在 linq 中连接字符串时获取 null

c# - System.IdentityModel.Metadata 和 X509SecurityToken 在 ASP.NET Core 中不可用

c# - 为什么无法将任何字体保存为图像? (但要在我的窗体上显示它)

c# - Array.Copy 只有一维吗?

c# - VS2017 .Net Core 2 性能及负载测试

c# - 通过使用 LINQ 筛选两个列表来创建字典