C# 如何传递函数<&燃气轮机;在具有联接的linq到sql中
我有以下问题 我想传递一个func作为参数,以便它可以在where语句中变化C# 如何传递函数<&燃气轮机;在具有联接的linq到sql中,c#,.net,linq-to-sql,c#-4.0,C#,.net,Linq To Sql,C# 4.0,我有以下问题 我想传递一个func作为参数,以便它可以在where语句中变化 private IEnumerable<User> GetUser(int cant, Func<User, bool> userFilter, Func<Client, bool> ClientFilter) { return (from dcu in _db.All<User>().Where(us
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方法应该足够了:
protected override IEnumerable<ContentType> FindImpl(Func<ContentType, bool> matchPredicate)
{
return _context.ContentTypes.Where(matchPredicate);
}
protectedoverride IEnumerable FindImpl(Func matchPredicate)
{
返回_context.ContentTypes.Where(匹配谓词);
}
您需要将中的lambda设置为过滤器
功能:
private IEnumerable<User> GetUser(int cant, Func<User, bool> filter)
{
return (from dcu in _db.All<User>().Where(a => filter(a))
join c in _db.All<Client>() on dcu.IdClient equals c.IdClient into temp
from cli in temp.DefaultIfEmpty()
select new {Usuer = dcu, Client = cli}).
Take(cant).Select(uc => _usersMapper.Map(uc.User, uc.Client)).AsEnumerable();
}
private IEnumerable GetUser(int-cant,Func-filter)
{
返回(来自_db.All()中的dcu,其中(a=>filter(a))
将dcu.IdClient上的_db.All()中的c连接到temp中等于c.IdClient
从临时DefaultIfEmpty()中的cli
选择新建{Usuer=dcu,Client=cli})。
获取(铁路超高)。选择(uc=>_usersMapper.Map(uc.User,uc.Client)).AsEnumerable();
}
您是否尝试过将表达式
作为参数?其中
需要一个取1个参数并返回true的方法GetUsers
不满足您发布的代码中的要求。
private IEnumerable<User> GetUser(int cant, Func<User, bool> filter)
{
return (from dcu in _db.All<User>().Where(a => filter(a))
join c in _db.All<Client>() on dcu.IdClient equals c.IdClient into temp
from cli in temp.DefaultIfEmpty()
select new {Usuer = dcu, Client = cli}).
Take(cant).Select(uc => _usersMapper.Map(uc.User, uc.Client)).AsEnumerable();
}