我正在我的餐厅评论网站上创建一个功能,获取上次评论的美食,然后找到其他评论相同的菜肴,平均得分更高。然后它将每个餐馆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();
答案 0 :(得分:4)
目前还不清楚为什么要获得评论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);
答案 1 :(得分:1)
您的查询
var samecuisine = (from r in db.Reviews
where r.Cuisine == review.Cuisine
select r.id);
返回IQueryable<int>
,而不是实际的int
。
尝试检索.FirstOrDefault()
,这会产生第一个结果(或默认值0)。