Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# EF code first无法将类型转换为int_C#_Asp.net Mvc_Linq_Entity Framework_Ef Code First - Fatal编程技术网

C# EF code first无法将类型转换为int

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

我在我的餐馆评论网站上创建了一个功能,可以获取上一次评论的菜肴,然后查找其他具有相同菜肴的评论,这些菜肴的平均得分较高。然后将每个餐厅id保存在数据库中。但是,我不断收到错误
无法将行
上的类型'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);