【问题标题】:How to check if multidimensional array row contains non-Zero value如何检查多维数组行是否包含非零值
【发布时间】:2014-08-29 06:04:04
【问题描述】:

关于 C# 中的多维数组的一个简短问题。

如何检查多维数组的一行是否包含非零值? 在 Matlab 中,“any”命令完全符合我的需要。

最后我需要把请求放到一个while条件中。 Matlab 中的意思:while(any(array[1,2,:])) --> 意思是:while(any-entry-of-the-row-is-not-Zero)...

我已经尝试过 Array.Exists() 或 Array.Find() 但它似乎只适用于一维数组。

谢谢

【问题讨论】:

  • 请显示一些代码?我想知道数组的类型?
  • 只需一个 foreach 和 if 语句就足够了。

标签: c# multidimensional-array while-loop row


【解决方案1】:

你有几个选择

myMultiArray.Any(row => row.Contains(Something));

或如 Sriram Sakthivel 建议的那样

foreach(var row in myMultiArray)
    if(row.Contains(Something)
        //Found it!

foreach(var row in myMultiArray)
    if(row.IndexOf(Something) >= 0)
        //Found it!

更具体地回答您的问题

myMultiArray.Any(row => row.Any(cell => cell != 0));

foreach(var row in myMultiArray)
    foreach(var cell in myMultiArray)
        if(cell != 0)
            //Found it!

for(int i = 0; i < array.GetLength(0); i++)
    for(int j = 0; j < array.GetLength(1); j++)
         if(array[i,j] != 0)
             //Do Something

MSDN 信息

Any

Contains

IndexOf

【讨论】:

  • 感谢您的回答...实际上 Any 命令会很棒,但我无法使用它,因为我生成了一个 int[,,] 数组。我可以使用 foreach-possibility。如果我想使用 C# Any-Command,我必须使用 List>,对吗?
  • 别担心,希望对您有所帮助
  • @Krus - Any 命令适用于 array 所在的 IEnumerable,所以不,您不需要使用列表
  • 使用一维数组它可以工作,但是一旦我将数组更改为 int[,] 数组,我就不能再使用 Any-Command...
  • @Krus - 我之前对二维数组和多维数组感到困惑(现在喝杯咖啡!)我附上了一些应该做你正在寻找的代码(没有 linq)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-04-07
  • 2015-05-09
  • 1970-01-01
  • 1970-01-01
  • 2012-01-10
  • 2019-08-10
相关资源
最近更新 更多