![](/img/trans.png)
[英]How to create single dimensional, two dimensional,three dimensional as well as multi dimensional array using C#?
[英]How to find a one dimensional array in a two dimensional array in C#
我有一个二维数组,即状态。 我创建一个一维数组,例如SubState。 然后,我更改SubState。 我想在州中找到新的SubState并获取索引。 举个例子:
int[][] States = new int[3][] { new int[] { 3, 3, 4 }, new int[] { 2, 5, 1 }, new int[] { 2, 3, 4 } };
int[] SubState = new int[States[0].Length];
States[0].CopyTo(SubState, 0);
SubState[0] -= 1;
我想在State中找到新SubState的索引,在示例中将为2。 谢谢。
您正在寻找SequenceEqual
:
int index = -1;
for (int i = 0; i < States.Length; i++)
if (States[i].SequenceEqual(SubState))
{
index = i;
break;
}
如果定义LINQ FindIndex
运算符,则可以使用以下命令更简洁地表达它:
int index = States.FindIndex(s => s.SequenceEqual(SubState));
您可以在LINQ查询中使用SequenceEqual
方法,如下所示:
var nextStateIndex = States
.Select((a, i) => new {Index = i, Array = a})
.FirstOrDefault(p => p.Array.SequenceEqual(SubState))
?.Index;
if (nextStateIndex.HasValue) {
...
}
注意:此代码使用新的?.
运营商。 如果要使用不支持此运算符的C#版本,请存储FirstOrDefault
结果以进行显式的null检查。
您可以使用Linq:
var index = -1;
var foundSubState = States.FirstOrDefault(x => {
index++;
return x.SequenceEqual(SubState);
});
var res = foundSubState != default(Array) ? index : -1;
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.