不用sql语句怎么进行分页

2024-11-20 20:43:44
推荐回答(1个)
回答1:

可以过滤啊。
你的希望应该是:有一个5000条记录的集合,希望能从指定位置开始获取指定数量的一个连续的子集吧?
如果你用LinQ可以使用下面的代码
public IEnumable GetData(IEnumable source, int startIndex, int size)
{
return source.Skip(startIndex).Take(size);
}
如果你用的不是LinQ,那么:
public IEnumable GetData(IEnumable source, int startIndex, int size)
{
int index = 0;
foreach(var item in source)
{
if(index < startIndex)
{
continue;
}
if(index - startIndex > size)
{
break;
}
yield return item;
}
当然,上面的枚举方法不是很好,不过,一般的情况下,你的集合应该能确定类型,比如是LIST或ARRAY等,也就是说能进行下标索引的,此时就更简单了,下面的代码就用数组来实现:
public IEnumable GetData(object[] source, int startIndex, int size)
{
for(int i = startIndex; i < startIndex + size && i < source.Length; i++)
{
yield return source[i];
}
}