c# - 如何将过滤器发送到 linq 表达式?
问题描述
我在 Dataaccsess 层上有一个类似的方法。有没有办法将两个过滤器发送到 linq 表达式,比如用双星号突出显示的代码?
public TEntity get(Expression<Func<TEntity, bool>> filter)
{
using (TContext context=new TContext())
{
return context.Set<TEntity>().SingleOrDefault(filter);
}
}
public void control(string username,string username)
{
UserDal.get(**u=>u.username==username&&u=>u.password==password**);
//enter code`enter code here` here
}
解决方案
你得到的方法需要一个Expression<Func<TEntity, bool>>
参数,我假设User
实体继承自TEntity
,
如果这些属性:user.UserName
并且user.Password
不在基类TEntity
中,则无法使用您的方法签名来完成 - 在表达式中,您只能从TEntity
为了传递User
类特定属性的过滤器表达式,您必须创建一个带有Expression<Func<User, bool>>
参数的单独方法,然后像这样调用它:
UserDal.getUser(u => u.UserName == "username" && u.Password == "password");
推荐阅读
- python - 如何使用 kv 文件实现在 kivy 中渲染白色背景?
- c# - 如何在 C# 中模拟声明?
- c - 需要帮助设计具有约束的比较器
- powershell - 通过脚本设置 IIS 环境变量
- cypress - 无法在 Cypress 上选择 chrome 浏览器
- sass - 使用 @use 设置 SASS 模块“库”以允许用户覆盖库变量的正确方法是什么?
- c - 如何使用适用于 2 个微控制器的嵌入式 C 为嵌入式系统编写可移植代码?
- django - 将 Django F 表达式与 Case、When 表达式一起使用
- sql - Postgresql 在位置 3 中从右侧替换逗号并将点和逗号从左侧替换到该位置
- redirect - 谁应该设置重定向?