通用实体框架读取方法

时间:2016-07-01 19:06:28

标签: c# entity-framework methods entity-framework-6

我是Entity Framework的新手,希望对我的Read方法有所帮助。

我有这个User课程和UserDAO我的方法。

我已经创建了

public IList<User> ReadUsersByName(string _name) {

var search = from m in context.Users
             where m.Name.Contains(_name)
             select m;

IList<User> _users = search.ToList();
return _users;
}

按名称搜索用户。

除了姓名,我的用户还有其他我想要搜索的属性(比如他们的年龄)。

我是否需要复制大部分代码,只需更改“年龄”的“名称”?

我想只创建一个方法并通过param传递搜索值和搜索字段。有可能吗?

1 个答案:

答案 0 :(得分:1)

您可以将where子句传递给函数:

请参阅此答案:C# Linq where clause as a variable

所以,你可以这样写:

public IList<User> ReadUsersWhere(Expression<Func<User, bool>> whereClause) {
  return context.Users.Where(whereClause).ToList();
}

你可以这样称呼它:

foo.ReadUsersWhere(u => u.Name.Contains("Joe"));

但在那时,你基本上只是暴露了一个IQueriable /重新发明轮子。