首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何在C#中比较多维数组?

如何在C#中比较多维数组?
EN

Stack Overflow用户
提问于 2012-09-16 20:13:54
回答 5查看 15.5K关注 0票数 26

如何比较多维数组?就是真/假。

代码语言:javascript
复制
double[,] data1 = new double[,] { { 1, 2 }, { 3, 4 }, { 5, 6 }, { 7, 8 } };    
double[,] data2 = new double[,] { { 1, 2 }, { 3, 4 }, { 5, 6 }, { 7, 8 } };

//bool compare = data1.SequenceEqual(data2);

有没有办法比较像1d数组这样的2d数组?

代码语言:javascript
复制
data1.SequenceEqual(data2);     

我必须比较每一秒,所以最简单的方法将是伟大的。非常感谢。

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2012-09-16 20:20:45

在linq中,多维数组可以作为一维可枚举数组使用。你只需要检查所有维度的长度。这段代码应该足够了:

代码语言:javascript
复制
var equal =
    data1.Rank == data2.Rank &&
    Enumerable.Range(0,data1.Rank).All(dimension => data1.GetLength(dimension) == data2.GetLength(dimension)) &&
    data1.Cast<double>().SequenceEqual(data2.Cast<double>());
票数 33
EN

Stack Overflow用户

发布于 2018-08-19 19:01:49

您可以使用.Cast<String>展开多维数组

代码语言:javascript
复制
Console.WriteLine("2D Array");
String[,] array2d = new String[,] { { "A1", "B1" }, { "A2", "B2" } };
foreach(var s in array2d.Cast<String>())
    Console.Write(s + ", ");

Console.WriteLine("\r\n3D Array");
String[,] array3d = new String[,] { { "A1", "B1", "C1" }, { "A2", "B2", "C1" } };
foreach (var s in array3d.Cast<String>())
    Console.Write(s + ", ");

输出

代码语言:javascript
复制
2D Array
A1, B1, A2, B2, 
3D Array
A1, B1, C1, A2, B2, C1, 
票数 3
EN

Stack Overflow用户

发布于 2021-03-19 02:17:04

用于比较2D数组的通用扩展方法:

代码语言:javascript
复制
public static bool SequenceEquals<T>(this T[,] a, T[,] b) => a.Rank == b.Rank
    && Enumerable.Range(0, a.Rank).All(d=> a.GetLength(d) == b.GetLength(d))
    && a.Cast<T>().SequenceEqual(b.Cast<T>());
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12446770

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档