EF代码首先不能将类型转换为int

时间:2014-03-05 09:53:56

标签: 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();

2 个答案:

答案 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)。