我有一个锯齿状阵列:
int[][] loadData
a1
o1 | 3 1 5 4 3 3 1
o2 | 1 4 1 2 2 1 0
o3 | 4 4 5 4 4 3 1
o4 | 2 3 4 4 5 4 1
o5 | 3 3 5 2 5 5 1
o6 | 3 3 3 1 5 2 0
o7 | 2 5 3 5 1 2 1
o8 | 4 5 4 4 4 1 0 // this is my jagged array without o1 and a1 I use them for example
我想查找列a1
中编号为3的所有元素。我尝试混合代码但没有效果。
例如列a1
中的3:
Dictionary<int, int?>[] matrix = new Dictionary<int, int?>[8];
matrix[0].Add(1, 3);
matrix[0].Add(5, 3);
matrix[0].Add(6, 3);
var x = Array.FindAll(loadData, a => Enumerable.Range(0, s)
.Select(j => loadData[j][0]));`
如何解决?
答案 0 :(得分:2)
答案取决于你的意思&#34;找到所有。&#34;
如果要查找和计算行数,可以
var count = array.Count( a => a[0] == 3 );
如果要输出行号,它会变得有点棘手,因为在应用Where
部分之前必须通过行号,否则原始行号将丢失。
var indexes = array.Select
(
(a, i) =>
new { RowNumber = i, Value = a[0]}
)
.Where( n => n.Value == 3 )
.Select( r => r.RowNumber )
您也可以展平数组:
var flatList = array.SelectMany
(
(array, row) =>
array.Select
(
(element,column) =>
new { Row = row, Column = column, Value = element }
)
);
...然后像平面表一样查询:
var indexes = flatList.Select
(
element => element.Column = 0 && element.Value == 3
)
.Select( a => a.Row );
答案 1 :(得分:0)
我可能错了,但我认为您可能正在寻找使用linq在.Where
语句中使用SelectMany
子句。虽然我将它转换为string [] []数组,但我发布了一个类似的问题。 https://stackoverflow.com/a/47784942/7813290