当使用Linq与Entity Framework查询数据库时,有没有减少重复lambda表达式的方法?例如:
我希望将其简化为:
然而,我得到了以下错误:LINQ to Entities不识别“Boolean IsActiveStaff()”方法,也无法将此方法转换为存储表达式。
我意识到这是因为LINQ To Entities无法将此方法转换为SQL表达式,但是有没有办法让它正常工作?
我知道可以编写一个查询命令类,它只需将用户名作为参数,并在其中放置所有逻辑。 但是,我想知道是否可以将一系列lambda嵌入到方法或扩展方法等中,并在需要时像上面的示例那样使用它们。
db.Users.FirstOrDefault(x => x.Username == "MM001" && x.Type == 1 && x.IsActive == True && x.ExpiryDate > DateTime.Now);
我希望将其简化为:
db.Users.FirstOrDefault(x => x.Username == "MM001" && x.IsActiveStaff());
我尝试将以下方法写入我的用户POCO中:
public bool IsActiveStaff()
{
return Type == 1 && IsActive == True && ExpiryDate > DateTime.Now;
}
然而,我得到了以下错误:LINQ to Entities不识别“Boolean IsActiveStaff()”方法,也无法将此方法转换为存储表达式。
我意识到这是因为LINQ To Entities无法将此方法转换为SQL表达式,但是有没有办法让它正常工作?
我知道可以编写一个查询命令类,它只需将用户名作为参数,并在其中放置所有逻辑。 但是,我想知道是否可以将一系列lambda嵌入到方法或扩展方法等中,并在需要时像上面的示例那样使用它们。