C# EF code first无法将类型转换为int
我在我的餐馆评论网站上创建了一个功能,可以获取上一次评论的菜肴,然后查找其他具有相同菜肴的评论,这些菜肴的平均得分较高。然后将每个餐厅id保存在数据库中。但是,我不断收到错误C# EF code first无法将类型转换为int,c#,asp.net-mvc,linq,entity-framework,ef-code-first,C#,Asp.net Mvc,Linq,Entity Framework,Ef Code First,我在我的餐馆评论网站上创建了一个功能,可以获取上一次评论的菜肴,然后查找其他具有相同菜肴的评论,这些菜肴的平均得分较高。然后将每个餐厅id保存在数据库中。但是,我不断收到错误无法将行上的类型'System.Linq.IQueryable'隐式转换为'int',其中r.id=samecuisine 任何帮助都将不胜感激 var samecuisine = (from r in db.Reviews where r.Cuisine == review.Cuisi
无法将行上的类型'System.Linq.IQueryable'隐式转换为'int'
,其中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();
你的问题
var samecuisine = (from r in db.Reviews
where r.Cuisine == review.Cuisine
select r.id);
返回一个IQueryable
,而不是实际的int
尝试检索.FirstOrDefault()
,这将生成第一个结果(或默认值0)。您的查询
var samecuisine = (from r in db.Reviews
where r.Cuisine == review.Cuisine
select r.id);
返回一个IQueryable
,而不是实际的int
尝试检索
.FirstOrDefault()
,这将产生第一个结果(或默认值0)。不清楚为什么要获取审阅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);
现在还不清楚你为什么想要一个评论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);