【问题标题】:how to use EF repository's find method?如何使用 EF 存储库的 find 方法?
【发布时间】:2012-08-08 23:06:21
【问题描述】:

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

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

谢谢

【问题讨论】:

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


    【解决方案1】:

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

    例如,如果 T 是用户,则可以使用 Name 属性进行操作

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

    这种类型的表达式称为 lambda 表达式。更多详情可以关注http://msdn.microsoft.com/en-us/library/bb397687.aspx

    【讨论】:

      【解决方案2】:

      假设你已经创建了一个具体的存储库实现,你会像这样调用这样的方法:

      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"
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2022-01-16
        • 2019-07-07
        • 2018-03-04
        • 1970-01-01
        • 2020-06-22
        相关资源
        最近更新 更多