在存储库模式中,我应该公开func <t,bool =“”>还是有多个非常相似的方法?

时间:2017-09-07 04:26:32

标签: c# repository repository-pattern

在存储库模式中,当涉及到定义我们的方法时,最好有一个&#34;泛型&#34;使用{cc_id:"1", cc_name:"cc1", cc_password:"cc1", cc_points:"8"} 接受任何过滤器的方法,或者为每个过滤器提供多种描述性方法?

一般方式

Func<T, bool>

参数方式的一种方法

public User Get(Func<User, bool> filter)
{
    return _context.User.SingleOrDefault(filter);
}

public List<User> GetAll(Func<User, bool> filter)
{
    return _context.User.Where(filter).ToList();
}

1 个答案:

答案 0 :(得分:1)

我使用第一个选项并另外定义返回Expression<Func<User, bool>>的方法,这些方法可以作为参数传递。

public Expression<Func<User, bool>> GetAdults()
{
    return user => user.Age >= 18;

}