我有一個字符串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