doe*_*man 5 .net .net-3.5 visual-studio-2008 linq-to-sql
我有一个表Site中的SQL与(其中包括)三个属性idReviewer1, idReviewer2, idReviewer3.现在我想在Site的实体类上创建一个方法来检查用户是否是审阅者:
partial class Site
{
public bool IsReviewer(int idUser)
{
return idReviewer1 == idUser || idReviewer2 == idUser || idReviewer3 == idUser;
}
}
Run Code Online (Sandbox Code Playgroud)
我这样使用它:
return from s in db.Sites
where s.IsReviewer(user)
select s;
Run Code Online (Sandbox Code Playgroud)
但是,Linq to SQL不知道如何将其转换为SQL.我收到以下错误消息:
Method 'Boolean IsReviewer(Int32)' has no supported translation to SQL.
Run Code Online (Sandbox Code Playgroud)
我宁愿不写这个:
return from s in db.Sites
where idReviewer1 == idUser || idReviewer2 == idUser || idReviewer3 == idUser
select s;
Run Code Online (Sandbox Code Playgroud)
有没有办法将此功能放在一个地方,而不诉诸SQL?
使用 Func 而不是方法调用。
partial class Site
{
public static Func<Site, bool> IsReviewer(int idUser)
{
return (s => s.idReviewer1 == idUser
|| s.idReviewer2 == idUser
|| s.idReviewer3 == idUser);
}
}
return db.Sites.Where(Site.IsReviewer());
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
589 次 |
| 最近记录: |