我有一个字符串list
和数字pageSize
,pageNumber
和rowNumber
的列表。我想按页面大小拆分这个列表,并创建一个list
的列表,然后返回给定的pageNumber
和rowNumber
处的元素。如果页码和行号高于可能的索引级别,则返回null
。 pageNumber
和rowNumber
都是从零开始的索引。如何将列表拆分为知道大小的块,然后找到一个项目?我是新来的c#
例子:
list = [ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 ]
pageSize = 3
pageNumber = 2
rowNumber = 1
Result:List = [ [1, 2, 3], [4, 5, 6], [7, 8, 9], [10]]
Result = 8.
但这段代码是抛出一个异常OutOfRange:
public static int? GetItemInThePagedDataList(IEnumerable<int> list, int pageSize, int pageNumber, int rowNumber)
{
var lists = list.Chop(pageSize);
if (pageNumber >= lists.Count() || rowNumber >= lists.First().Count())
{
throw new ArgumentOutOfRangeException();
}
return lists.ElementAt(pageNumber).ElementAt(rowNumber);
}
没有必要拆分原始列表。你可以使用公式index = pageSize * pageNumber + rowNumber。 – juharr
[在linq创建批次]可能的重复(https://stackoverflow.com/questions/13731796/create-batches-in-linq) – mjwills