Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/329.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# IQueryable选择全部?_C#_Asp.net_Visual Studio 2010_Linq - Fatal编程技术网

C# IQueryable选择全部?

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

我有这个方法,它选择特定范围内的数据(pageIndex和pageSize)

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();但它不承认多库曼。不管怎样,就像你的答案一样简单。谢谢