我是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传递搜索值和搜索字段。有可能吗?
答案 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 /重新发明轮子。