使用IQueryable编译查询<;bool>;返回值
本文关键字:bool gt 返回值 IQueryable lt 查询 使用 编译 | 更新日期: 2023-09-27 18:00:57
我有一个帖子ID列表,我试图为每个帖子返回当前用户的投票状态(如果用户投票支持该帖子,则为true,如果用户没有投票,则为false(。我觉得每件事都还可以,但我犯了两个错误。
public static Func<DatabaseDataContext, string, int[], IQueryable<bool>>
GetUserVoted = CompiledQuery.Compile((DatabaseDataContext db, string UserId, int[] PostIds)
=> (from p in PostIds
select new
{
db.Votes.Any(v=> v.PostId==p && v.UserId == UserId)
})
);
我得到2个错误:
无效的匿名类型成员声明符。匿名类型成员必须使用成员分配、简单名称或成员访问权限声明。
和
无法隐式转换类型"System.Func<DatabaseDataContext,string,int[],System.Collections.Generic.IEnumerable>"到"System.Func<DatabaseDataContext,string,int[],System.Linq.IQueryable>'。存在显式转换(是否缺少强制转换?(
如果要使用匿名类型,那么它的成员应该有一个名称。您缺少像HasAnyVote
:这样的名称
select new
{
HasAnyVote = db.Votes.Any(v=> v.PostId==p && v.UserId == UserId)
})
或者直接使用:
(from p in PostIds
select db.Votes.Any(v=> v.PostId==p && v.UserId == UserId))
.AsQueryable<bool>()