我有一个锯齿状的数组,它基本上只是一个m行和n列的矩阵(我知道我可以使用普通矩阵,但我读到使用锯齿状数组的矩阵乘法更快)。
我想在不使用for循环的情况下从一列中提取每一行。这是如何完成的。此外,请解释代码,因为我找到了一个答案,声称以下内容应该有效,但我无法弄清楚如何使其适应我的情况。
object[] column = Enumerable.Range(0, myArray.GetLength(0))
.Select(rowNum => (object)myArray[daily.m, daily.n])
.ToArray();
好的,以下答案似乎没有给我错误,但现在我遇到了另一个问题:
var selectedArray = myArray.Where(o => (o != null && o.Count() > daily.dependentVarIndex)).Select(o => o[daily.dependentVarIndex]).ToArray();
Method1 m1 = new Method1(13);
for (int i = 0; i < daily.m; i++)
{
m1.do(selectedArray[i]); //this give me an error
}
我现在如何索引对象&#34; selectedArray&#34;?请注意,我定义了Method1,fxn&#34; do&#34;早在我的代码中。
答案 0 :(得分:2)
使用lambda:
var jaggedArray = new int[5][];
jaggedArray[0] = new[] { 1, 2, 3 }; // 3 item array
jaggedArray[1] = new[] { 7, 6 };
jaggedArray[3] = new int[10]; // 10 item array of 0's
const int selectItem = 0;
var selectedArray = jaggedArray
.Where(o => (o != null && o.Count() > selectItem))
.Select(o => o[selectItem])
.ToArray();
以下数组应包含3个项目
[1,7,0]
答案 1 :(得分:0)
int [][] jaggedArray = /* SNIP */
jaggedArray.Select(row => row.Length >= ZERO_INDEXED_COLUMN_NO + 1
? (int?)row[ZERO_INDEXED_COLUMN_NO]
: null)
.ToArray();
其中ZERO_INDEXED_COLUMN_NO
是您要检索的零索引编号。结果是一个(int?)
数组,其值为null
,其中给定行将缩短以获得ZERO_INDEXED_COLUMN_NO
条目。