【发布时间】:2013-04-03 14:48:59
【问题描述】:
如何使用 lambda 和 linq 按范围获取元素?
例如:
我有一个包含 54 个元素的表格。我只想从位置 1-10、或 10-20 或 20-30 等中获取元素——通常是在某个数字范围内。
我该怎么做?
【问题讨论】:
如何使用 lambda 和 linq 按范围获取元素?
例如:
我有一个包含 54 个元素的表格。我只想从位置 1-10、或 10-20 或 20-30 等中获取元素——通常是在某个数字范围内。
我该怎么做?
【问题讨论】:
List<int> list = new List<int>();
IEnumerable<int> interval = list.Skip(a).Take(b);
【讨论】:
您可以使用Enumerable.Skip 和Enumerable.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。
【讨论】:
如果你想要的是分页,
int pageIndex = 1;
int pageSize= 10
List<object> list = new List<object>();
IEnumerable<object> interval = list.Skip(pageIndex*pageSize).Take(pageSize);
【讨论】:
像这样:
MyList.Skip(x).Take(y);
【讨论】:
你可以使用
.Skip(n1).Take(n2)
【讨论】:
使用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);
不要Skip 和Take,只要GetRange!
希望这会有所帮助!
【讨论】: