我正在我的餐厅评论网站上创建一个功能,该功能获取上次评论的菜系,然后找到具有相同菜系且平均得分更高的其他评论。然后它将每个餐厅 ID 保存在数据库中。但是我一直收到错误 Cannot implicitly convert type 'System.Linq.IQueryable<int>' to 'int'
在线where r.id = samecuisine
.
如有任何帮助,我们将不胜感激。
var samecuisine = (from r in db.Reviews
where r.Cuisine == review.Cuisine
select r.id);
var pick = (from r in db.Reviews
where r.id = samecuisine
select r.score).Average();
var choices = (from r in db.Reviews
where r.score >= pick
select r.RestaurantId).ToList();
最佳答案
目前还不清楚您为什么想要获得评论 ID。您只对那些评论的分数感兴趣,对吗?我怀疑您实际上想要参与您的第一个查询和第二个查询的一部分:
var averageScoreForCuisine = (from r in db.Reviews
where r.Cuisine == review.Cuisine
select r.score).Average();
或者在我看来更具可读性:
var averageScoreForCuisine = db.Reviews
.Where(r => r.Cuisine == review.Cuisine)
.Average(r => r.score);
关于c# - EF 代码首先无法将类型转换为 int,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22194174/