Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/csharp-4.0/2.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
Linq 什么';这两者之间的区别是什么;IQueryable<;T>;获取();及;IQueryable<;T>;Get(表达式<;Func<;T,bool>;谓词)";_Linq_C# 4.0_Iqueryable - Fatal编程技术网

Linq 什么';这两者之间的区别是什么;IQueryable<;T>;获取();及;IQueryable<;T>;Get(表达式<;Func<;T,bool>;谓词)";

Linq 什么';这两者之间的区别是什么;IQueryable<;T>;获取();及;IQueryable<;T>;Get(表达式<;Func<;T,bool>;谓词)";,linq,c#-4.0,iqueryable,Linq,C# 4.0,Iqueryable,下面给出的代码是他们选择一种方式与另一种方式的任何差异或原因。在我看来,results1和results2将经历一个几乎相同的过程。我错过什么了吗?我在不同的源代码库中看到了这两种方法,我只是好奇它们是否是选择其中一种的好理由。谢谢 public class Repo<T> { IEnumerable<T> items; public Repo(IEnumerable<T> items) { this.items = i

下面给出的代码是他们选择一种方式与另一种方式的任何差异或原因。在我看来,results1和results2将经历一个几乎相同的过程。我错过什么了吗?我在不同的源代码库中看到了这两种方法,我只是好奇它们是否是选择其中一种的好理由。谢谢

public class Repo<T>
{
    IEnumerable<T> items;
    public Repo(IEnumerable<T> items)
    {
        this.items = items;
    }
    public IQueryable<T> Get()
    {
        return items.AsQueryable();
    }
    public IQueryable<T> Get(Expression<Func<T, bool>> predicate)
    {
        return items.AsQueryable().Where(predicate);
    }
}
class Program
{
    static void Main(string[] args)
    {
        var items = new[] { "a", "b", "c" };
        var repo = new Repo<string>(items);
        var results1 = repo.Get().Where(item => item == "b").ToList();
        var results2 = repo.Get(item => item == "b").ToList();
    }
}
公共类回购
{
i数不清的项目;
公开回购(IEnumerable items)
{
这个项目=项目;
}
公共IQueryable Get()
{
返回项目。AsQueryable();
}
公共IQueryable Get(表达式谓词)
{
return items.AsQueryable().Where(谓词);
}
}
班级计划
{
静态void Main(字符串[]参数)
{
变量项=新[]{“a”、“b”、“c”};
var回购=新回购(项目);
var results1=repo.Get();
var results2=repo.Get(item=>item==“b”).ToList();
}
}

这只是一种方便的方法,仅此而已。@JeffMercado-你应该发表你的评论作为这个问题的答案。