我遇到以下问题。如何将linq中的func <>传递给sql加入
我想传递一个func作为参数,所以它可以在where语句中变化。
private IEnumerable<User> GetUser(int cant, Func<User, bool> userFilter, Func<Client, bool> ClientFilter)
{
return (from dcu in
_db.All<User>().Where(userFilter)
join c in _db.All<Client>() on dcu.IdClient equals c.IdClient into temp
from cli in temp.DefaultIfEmpty().Where(ClientFilter)
select new {Usuer = dcu, Client = cli}).
Take(cant).Select(uc => _usersMapper.Map(uc.User, uc.Client)).AsEnumerable();
}
而且FUNC应该是这样的
public void GetUsers()
{
GetUser(50, u => u.Email.Contains("[email protected]"), c=> true);
}
public void GetUsersFilterByClient()
{
GetUser(50, u => true, c=> c.Password.Contains("MyPasssword"));
}
您是否尝试过'Expression>'作为参数? –
2012-03-08 18:16:15
'在哪里'期待一个需要1个参数并返回true的方法。在您发布的代码中,'GetUsers'不符合该要求。 – 2012-03-08 18:16:27