【问题标题】:How to take elements from range with lambda expressions and linq?如何使用 lambda 表达式和 linq 从范围中获取元素?
【发布时间】:2013-04-03 14:48:59
【问题描述】:

如何使用 lambda 和 linq 按范围获取元素?

例如:

我有一个包含 54 个元素的表格。我只想从位置 1-10、或 10-20 或 20-30 等中获取元素——通常是在某个数字范围内。

我该怎么做?

【问题讨论】:

    标签: c# linq lambda


    【解决方案1】:
    List<int> list = new List<int>();
    IEnumerable<int> interval = list.Skip(a).Take(b);
    

    【讨论】:

      【解决方案2】:

      您可以使用Enumerable.SkipEnumerable.Take 方法;

      绕过序列中指定数量的元素,然后返回 剩下的元素。


      返回从一个开始的指定数量的连续元素 顺序。

      List<int> yourlist = new List<int>(){1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15};
      IEnumerable<int> newlist = yourlist.Skip(2).Take(3);
      
      foreach(var i in newlist)
      {
         Console.WriteLine(i);
      }
      

      输出将是;

      3
      4
      5
      

      这是DEMO

      【讨论】:

        【解决方案3】:

        如果你想要的是分页,

        int pageIndex = 1;
        int pageSize= 10
        
        List<object> list = new List<object>();
        IEnumerable<object> interval = list.Skip(pageIndex*pageSize).Take(pageSize);
        

        【讨论】:

          【解决方案4】:

          像这样:

          MyList.Skip(x).Take(y);
          

          【讨论】:

            【解决方案5】:

            你可以使用

            .Skip(n1).Take(n2)
            

            【讨论】:

              【解决方案6】:

              使用List&lt;T&gt;.GetRange(int index, int count);

              List<int> numbers = new List<int>() { 1, 2, 3, 4, 5, 6 };
              List<int> firstThreeNumbers = numbers.GetRange(0, 3);
              List<int> lastThreeNumbers = numbers.GetRange(numbers.Count - 3, 3);
              

              不要SkipTake,只要GetRange

              希望这会有所帮助!

              【讨论】:

                猜你喜欢
                • 2015-05-26
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 2017-06-10
                • 2011-03-23
                • 2018-10-05
                • 1970-01-01
                相关资源
                最近更新 更多