C# IQueryable选择全部?
我有这个方法,它选择特定范围内的数据(pageIndex和pageSize)C# IQueryable选择全部?,c#,asp.net,visual-studio-2010,linq,C#,Asp.net,Visual Studio 2010,Linq,我有这个方法,它选择特定范围内的数据(pageIndex和pageSize) publicpagedlist(IQueryable源代码、intPageIndex、intPageSize) { this.AddRange(source.Skip(pageIndex*pageSize).Take(pageSize.ToList()); } 我想创建一个重载方法来选择所有数据,下面是我的代码 public PagedList(IQueryable<T> sour
publicpagedlist(IQueryable源代码、intPageIndex、intPageSize)
{
this.AddRange(source.Skip(pageIndex*pageSize).Take(pageSize.ToList());
}
我想创建一个重载方法来选择所有数据,下面是我的代码
public PagedList(IQueryable<T> source)
{
//this.AddRange(source.Select(x => new T()).ToList()); (1)
this.AddRange(source.AsQueryable().ToList()); (2)
}
公共页面列表(IQueryable源代码)
{
//this.AddRange(source.Select(x=>newt()).ToList());(1)
this.AddRange(source.AsQueryable().ToList());(2)
}
首先,我尝试了(1),但它不接受t。然后我尝试了(2),建议我将参数类型设置为INumerable而不是IQueryable。在这种情况下,选择所有数据的解决方案是什么
谢谢您可以这样做:
public PagedList(IEnumerable<T> source)
{
this.AddRange(source);
}
公共页面列表(IEnumerable源代码)
{
此.AddRange(源);
}
作为参数类型,而不是IEnumerable
,因为您不使用任何特定于IQueryable
的功能IQueryable
- 无
,因为您只需要所有数据AsQueryable
- 没有
作为ToList
内部已执行复制。使用List。AddRange
将有两个复制操作正在进行ToList
public PagedList(IEnumerable<T> source)
{
this.AddRange(source);
}
公共页面列表(IEnumerable源代码)
{
此.AddRange(源);
}
作为参数类型,而不是IEnumerable
,因为您不使用任何特定于IQueryable
的功能IQueryable
- 无
,因为您只需要所有数据AsQueryable
- 没有
作为ToList
内部已执行复制。使用List。AddRange
将有两个复制操作正在进行ToList
public PagedList(IQueryable<T> source)
{
this.AddRange(source.ToList());
}
公共页面列表(IQueryable源代码)
{
this.AddRange(source.ToList());
}
把某件事列在清单上,然后让它成为可查询的,这似乎很奇怪。特别是考虑到该来源已经可以查询。有什么问题:
public PagedList(IQueryable<T> source)
{
this.AddRange(source.ToList());
}
公共页面列表(IQueryable源代码)
{
this.AddRange(source.ToList());
}
把某件事列在清单上,然后让它成为可查询的,这似乎很奇怪。特别是考虑到源代码已经可以查询了。IEnumerable和IQueryable都可以,这只取决于您实际需要什么 为了更好的情况,苏迪,你可以读这个
IEnumerable和IQueryable都很好,这只取决于您实际需要什么 为了更好的情况,苏迪,你可以读这个
谢谢丹尼尔,这很有帮助。对于记录,我尝试了类似这样的方法.AddRange(source.Select(x=>newdokument{Beschreibung=x.Beschreibung,Dokumenttyp=x.Dokumenttyp.Bezeichnung}).ToList();但它不承认多库曼。不管怎样,就像你的答案一样简单。谢谢汉克丹尼尔,这很有帮助。对于记录,我尝试了类似这样的方法.AddRange(source.Select(x=>newdokument{Beschreibung=x.Beschreibung,Dokumenttyp=x.Dokumenttyp.Bezeichnung}).ToList();但它不承认多库曼。不管怎样,就像你的答案一样简单。谢谢