使用LinQ将一系列值添加到List中

时间:2014-06-11 06:47:03

标签: c# linq list matrix

我有一个List<List<double>> val,每个列表中有2000个列表和2000个元素(你可以把它想象成2000 X 2000矩阵)。我有两个双重值,比如x和y。我需要选择List<List<double>> val中位于x和y范围之间的所有元素。我可以使用LinQ在C#中使用单个语句来执行此操作。

4 个答案:

答案 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();