Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/310.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 使用LinQ将中的值范围添加到列表中_C#_Linq_List_Matrix - Fatal编程技术网

C# 使用LinQ将中的值范围添加到列表中

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,每个列表中有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 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