“IQueryable <t> Get()”和“IQueryable <t> Get(表达式<func <t,bool =”“>&gt;谓词)”</func <t,> </t> </T>

时间:2012-09-02 03:25:22

标签: linq c#-4.0 iqueryable

鉴于以下代码是他们选择一种方式与另一种方式的任何差异或理由。对我来说,似乎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();
    }
}

0 个答案:

没有答案