我有与此类似的二维数组:
string[,] arr = {
{ "A", "A", "A", "A", "A", "A", "A", "D", "D", "D", "D", "D", "D", "D", "D" },
{ "1", "1", "1", "1", "1", "1", "1", "0", "0", "0", "0", "0", "0", "0", "0" },
{ "2", "2", "2", "2", "2", "2", "2", "00", "00", "00", "00", "00", "00", "00", "00" }
};
我试图从上面的数组中得到以下结果:
A 1 2
A 1 2
A 1 2
A 1 2
A 1 2
A 1 2
从长度为 0 的数组中获取所有“A”。而不是从其他列中获取它的腐蚀值。这是具有超过 6k 个值的大型二维数组。但设计与上述完全相同。到目前为止,我尝试了两种方法:
第一种方法:使用for循环遍历所有值:
var myList = new List<string>();
var arrLength = arr.GetLength(1)-1;
for (var i = 0; i < arrLength; i++)
{
if (arr[0,i].Equals("A"))
myList.Add(arr[0, i]);
else
continue;
}
}
第二种方法:创建列表而不是遍历所有值:
var dataList = new List<string>();
var list = Enumerable.Range(0, arr.GetLength(1))
.Select(i => arr[0, i])
.ToList();
var index = Enumerable.Range(0, arr.GetLength(1))
.Where(index => arr[0, index].Contains("A"))
.ToArray();
var sI = index[0];
var eI = index[index.Length - 1];
myList.AddRange(list.GetRange(sI, eI - sI));
他们似乎都很慢,效率不够。有没有更好的方法来做到这一点?