我有一个List<List<double>> val
,每个列表中有2000个列表和2000个元素(你可以把它想象成2000 X 2000矩阵)。我有两个双重值,比如x和y。我需要选择List<List<double>> val
中位于x和y范围之间的所有元素。我可以使用LinQ在C#中使用单个语句来执行此操作。
答案 0 :(得分:2)
val.SelectMany(a => a).Where(a => a < y && a > x)
SelectMany
展开您的列表,然后Where
为您过滤。
答案 1 :(得分:0)
您可以执行以下操作:
val.Where((l, i) => i < y && i > x)
.Select(l => l.Where((v, i) => i < y && i > x))
戴维斯答案的不同之处在于,这里“矩阵的x / y坐标”是使用Where
重载过滤的,该重载也提供元素索引。
使用以下矩阵:
[11,12,13,14]
[21,22,23,24]
[31,32,33,34]
[41,42,43,44]
和x = 0
以及y = 3
您将获得以下矩阵:
[22,23]
[32,33]
参见示例HERE。
答案 2 :(得分:0)
我会这样做
var query = from z in val.SelectMany(i=> i)
where z > x && x < y
select z;
答案 3 :(得分:-1)
像这样:
List<double> abc = (from listA in matrix from theVal in listA where (theVal > 5 && theVal < 6) select theVal).ToList();