【问题标题】:Adding a range of values in to a List using LinQ使用 LinQ 将一系列值添加到列表中
【发布时间】:2014-06-11 06:47:02
【问题描述】:

我有一个List<List<double>> val,其中包含 2000 个列表和每个列表中的 2000 个元素(您可以将其想象为 2000 X 2000 矩阵)。我有两个双值,比如 x 和 y。我需要选择List<List<double>> val 中介于x 和y 范围内的所有元素。我可以使用 LinQ 在 C# 中使用单个语句来执行此操作吗?

【问题讨论】:

    标签: c# linq list matrix


    【解决方案1】:
    val.SelectMany(a => a).Where(a => a < y && a > x)
    

    SelectMany 将您的列表展平,然后 Where 为您过滤它。

    【讨论】:

      【解决方案2】:

      我会这样做

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

      【讨论】:

        【解决方案3】:

        您可以执行以下操作:

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

        与 Davids 答案的不同之处在于,这里的“矩阵的 x/y 坐标”是通过使用 Where 重载过滤的,该重载也提供元素索引。

        使用以下矩阵:

        [11、12、13、14]
        [21、22、23、24]
        [31、32、33、34]
        [41、42、43、44]

        x = 0y = 3 你会得到以下矩阵结果:

        [22, 23]
        [32, 33]

        参见示例HERE

        【讨论】:

          【解决方案4】:

          像这样:

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

          【讨论】:

          • 说明你选择-1的原因
          猜你喜欢
          • 2014-01-13
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2021-09-25
          • 1970-01-01
          相关资源
          最近更新 更多