4

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

例如:

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

我怎样才能做到这一点?

4

6 回答 6

10
List<int> list = new List<int>();
IEnumerable<int> interval = list.Skip(a).Take(b);
于 2013-04-03T14:50:50.613 回答
6

你可以使用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.

于 2013-04-03T14:52:46.233 回答
4

如果你想要的是寻呼,

int pageIndex = 1;
int pageSize= 10

List<object> list = new List<object>();
IEnumerable<object> interval = list.Skip(pageIndex*pageSize).Take(pageSize);
于 2013-04-03T14:55:10.087 回答
1

像这样:

MyList.Skip(x).Take(y);
于 2013-04-03T14:51:21.943 回答
1

您可以使用

.Skip(n1).Take(n2)
于 2013-04-03T14:51:32.353 回答
1

采用List<T>.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

希望这可以帮助!

于 2013-04-03T23:33:18.077 回答