gpt4 book ai didi

c# - 可查询的混淆

转载 作者:太空宇宙 更新时间:2023-11-03 14:13:02 27 4
gpt4 key购买 nike

我有一个关于 IQueriable 的问题。也许我的理解是错误的,但我认为调用 ToList() 会强制执行查询。我有一个要使用 IQuerriable 填充的 PaginatedList 类,但是当我这样做时,我得到了一系列空对象。谁能告诉我我做错了什么。

public class PaginatedList<T> : List<T>  
{
public PaginatedList(IQueryable<T> source, int pageIndex, int pageSize)
{
PageIndex = pageIndex;
PageSize = pageSize;
TotalCount = source.Count();
TotalPages = (int)Math.Ceiling(TotalCount / (double)PageSize);
List<T> temp = source.Skip(PageIndex * PageSize).Take(PageSize).ToList();
this.AddRange(temp);
}
}

我的临时列表正在填充默认值。我不明白。任何帮助将不胜感激。

列表填充如下:

 public IQueryable<Transaction> GetTransactions()  
{
return from trx in pingDataContext.Table0
join pdo in pingDataContext.Table1
on trx.AssociatedID equals pdo.ID
where trx.Type == 1 &&
pdo.PortalID == 330
select new Transaction(trx.ID, pdo.CreateDate, pdo.Msisdn, pdo.Remarks, 0.1,
(double)pdo.Price, pdo.DnldLink, pdo.UserIP);
}

我在这里创建我的分页列表:

var transactions = transactionRepository.GetTransactions();  
var paginatedTransactions = new PaginatedList<Transaction>(transactions,
(int)page,
pageSize);

谢谢

最佳答案

你说你的列表充满了默认值。如果您指的是 default(T),那么问题就来了:default(T) 返回 nullT 是一个引用类型。
您对 ToList() 的使用与此无关。在您的代码中甚至没有必要。以下是等价的:

var temp = source.Skip(PageIndex * PageSize).Take(PageSize);
this.AddRange(temp);

原因是 AddRange 无论如何都会枚举传递的可枚举对象。

关于c# - 可查询的混淆,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7228606/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com