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

3

我有一个 List<List<double>> val,其中包含2000个列表,每个列表中有2000个元素(您可以将其想象为2000 X 2000矩阵)。 我有两个双精度值x和y。 我需要选择在范围x和y之间的List<List<double>> val中的所有元素。 是否可以使用C#中的单个语句使用LinQ来完成此操作。

4个回答

2
val.SelectMany(a => a).Where(a => a < y && a > x)

SelectMany 函数可以将列表扁平化,然后使用 Where 函数来过滤它。


0
你可以像下面这样做:

你可以像下面这样做:

val.Where((l, i) => i < y && i > x)
   .Select(l => l.Where((v, i) => i < y && i > x))

Davids 的回答与此处不同,这里使用Where重载对“矩阵的x/y坐标”进行过滤,同时还提供了元素索引。
以下是示例矩阵:
[11, 12, 13, 14] [21, 22, 23, 24] [31, 32, 33, 34] [41, 42, 43, 44]
x=0y=3,则会得到以下矩阵结果:
[22, 23] [32, 33]
参见示例HERE

0

我会这样做

var query = from z in val.SelectMany(i=> i)
            where z > x && x < y
            select z;

-1

像这样:

List<double> abc = (from listA in matrix from theVal in listA where (theVal > 5 && theVal < 6) select theVal).ToList();

说明你为什么给出 -1 的评价。 - Andreas

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接