我定义了一个string[,] a = new string[9, 3];,但是想获取里面实际存有数据的行数,怎么获取?
public static List<int> GetHasValueRowIndex(string[,] arr) { var hasValueRowIndex = new List<int>(); for (var i = 0; i < arr.GetLength(0); i++) { for (var j = 0; j < arr.GetLength(1); j++) { if (!string.IsNullOrEmpty(arr[i, j])) { hasValueRowIndex.Add(i); break; } } } return hasValueRowIndex; } //Demo string[,] a = new string[9, 3]; a[0, 0] = "a"; a[2, 0] = "b"; a[4, 0] = "c"; a[6, 0] = "d"; a[8, 0] = "e"; var arr = GetHasValueRowIndex(a); Console.WriteLine("HasValue Row Count:" + arr.Count); arr.ForEach(o => Console.WriteLine(o)); /* HasValue Row Count:5 0 2 4 6 8 */
a.GetLength(0)
a.GetLength(1)
学习学习,楼上正解~
a.GetLength(0)
a.GetLength(1)
xu_happy_you 提供的解答是正确的。
数组的Length返回所有维数的总元素长度,而方法GetLength则返回指定维度的长度。
你要返回一个二维数组[,]的行数,也就是要返回第0维的长度(维度是从0开始计数的),所以数组[,]的行数就是[,].GetLength(0)
题目中是要“实际存有数据的行数”