c# - 检查 2 个 int 数组是否仅包含同一索引处的唯一数字

标签 c# arrays linq

如果我有 2 个 int 数组 a 和 b 并且它们包含这样的数据..

a[0] = 1
a[1] = 3
a[2] = 7

b[0] = 6
b[1] = 3
b[2] = 5

如何检查所有数字对是否唯一,例如同一索引处的 a[i]b[i] 的每个组合不会在数组的其余部分中重复...因此上述数据会通过,但是如果我在下面介绍它就会失败..

a[24] = 7
b[24] = 5

因为该组合已存在于数组中的索引 2 处。我可以在 LINQ 中执行此操作吗?

最佳答案

如果两个数组上的值对的顺序很重要(即 a[0] == 1, b[0] == 2 被认为与 a 不同) [0] == 2, b[0] == 1) 那么使用 Linq 检查唯一性的一种方法如下:

bool unique = a.Zip(b).Distinct().Count() == a.Length;

如果对中值的顺序不重要,则稍微复杂一些:

bool unique = a.Zip(b).DistinctBy(
     x => (Math.Min(x.First, x.Second), Math.Max(x.First,x.Second)))
.Count() == a.Length;

这些解决方案假设数组之一中缺失的值将被忽略。

(注意:DistinctBy() 仅在 .Net 6.0 或更高版本中可用,或通过 NuGet 包使用。)

关于c# - 检查 2 个 int 数组是否仅包含同一索引处的唯一数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71193773/

相关文章:

javascript - 在 .done 之外调用函数时,SignalR 不会调用服务器集线器方法

c# - .Net Core 应用程序中的 Log4Net : LoggingEvent not set properly (LocationInformation porperties are set to "?")

c# - 在 View 上自动更新 ViewComponent

c# - 不属于 Windows 组或事件目录的人将如何访问 TFS 项目?

Java将 'cluttered' .txt文件输入到2D数组中

javascript - 空数组和排序推送的键 JavaScript

asp.net - Linq to 实体多个 WHERE 子句 &&

javascript - 如何将提示中的多个输入添加到数组中?

c# - 根据特定属性比较两个列表

C# linq 左连接