如何使用EF存储库的查找方法?

时间:2012-08-08 23:06:22

标签: .net linq entity-framework c#-4.0 c#-3.0

我看到了一些使用EF通用重新定位的例子。我对LINQ没有非常坚定的把握,所以我无法理解如何使用这种方法。你能引导我吗?这是我的代码。我不知道如何将表达式传递给它。如果您愿意,可以通过示例进行高度评价。

 public IEnumerable<T> Query(Expression<Func<T, bool>> filter)
    {
        return objectSet.Where(filter);
    }

由于

2 个答案:

答案 0 :(得分:2)

您可以像使用linq where方法一样使用它。

例如,如果T是用户,则可以使用Name属性

Query(u=>u.Name == "Bob");

这种类型的表达式称为lambda表达式。有关详细信息,请查看http://msdn.microsoft.com/en-us/library/bb397687.aspx

答案 1 :(得分:1)

假设您已经创建了一个具体的存储库实现,那么您将调用这样的方法:

var repo = new StuffRepo();

IEnumerable<Stuff> stuff = repo.Query(s => s.SomeProperty == "Foo");

所以表达式或过滤器是一个匿名函数(Func),它取一个T(在我的例子中,一个Stuff,由别名“s”表示),并返回一个布尔值。所以在SQL中:

select *
from stuff s
where s.SomeProperty = "Foo"