1

我看到了一些使用 EF 通用存储库的示例。我对 LINQ 的掌握不是很牢,所以我无法理解如何使用这种方法。你能指导我吗?这是我的代码。我不知道如何将表达式传递给它。如果您可以举例说明,将高度赞赏。

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

谢谢

4

2 回答 2

2

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

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

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

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

于 2012-08-08T23:25:09.947 回答
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"
于 2012-08-08T23:29:55.863 回答