C# 使用LinQ将中的值范围添加到列表中
我有一个列表val,每个列表中有2000个列表和2000个元素,你可以想象它是2000 X 2000矩阵。我有两个双值,比如x和y。我需要选择列表val中位于x和y范围内的所有元素。我可以使用LinQ在C中使用一条语句来实现这一点吗C# 使用LinQ将中的值范围添加到列表中,c#,linq,list,matrix,C#,Linq,List,Matrix,我有一个列表val,每个列表中有2000个列表和2000个元素,你可以想象它是2000 X 2000矩阵。我有两个双值,比如x和y。我需要选择列表val中位于x和y范围内的所有元素。我可以使用LinQ在C中使用一条语句来实现这一点吗 val.SelectMany(a => a).Where(a => a < y && a > x) 展平您的列表,然后为您筛选它。如下所示: List<double> abc = (from listA in m
val.SelectMany(a => a).Where(a => a < y && a > x)
展平您的列表,然后为您筛选它。如下所示:
List<double> abc = (from listA in matrix from theVal in listA where (theVal > 5 && theVal < 6) select theVal).ToList();
您可以执行以下操作:
val.Where((l, i) => i < y && i > x)
.Select(l => l.Where((v, i) => i < y && i > x))
与Davids的答案不同的是,这里矩阵的x/y坐标通过使用重载进行过滤,重载也提供元素索引
使用以下矩阵:
[11,12,13,14]
[21, 22, 23, 24]
[31, 32, 33, 34]
[41,42,43,44]
x=0,y=3,得到如下矩阵:
[22,23]
[32,33]
参见示例。我会这样做
var query = from z in val.SelectMany(i=> i)
where z > x && x < y
select z;
陈述你的理由-1