c# - EF 代码首先无法将类型转换为 int

标签 c# asp.net-mvc linq entity-framework ef-code-first

我正在我的餐厅评论网站上创建一个功能,该功能获取上次评论的菜系,然后找到具有相同菜系且平均得分更高的其他评论。然后它将每个餐厅 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/

相关文章:

c# - IEnumerator 是否有 "HasNext"方法?

c# - 如何将 View 模型从 Controller 传递给 Web api 方法

C# 如何返回 null 或模型

asp.net-mvc - Sitefinity CMS : Html. BeginFormSitefinity 与外部 URL?

c# - 如何比较 2 个逗号分隔的字符串值并在现有列表中的同一位置进行更新?

c# - 如何在 Linq 中的一行代码中对多个属性的列表进行排序

c# - 在 Entity Framework 中的 Groupby 中获取(限制)列表

c# - 无法向 CaSTLe Windsor 注册 MvcMailer

c# - 将同一列中的不同值相互附加

c# - OWIN 能否替代 ASP.NET MVC 应用程序中的 DI?