2014-03-05 60 views
1

我在我的餐廳評論網站上創建了一項功能,該功能獲取上次評論的美食,然後找到具有更高平均分數的相同美食的其他評論。然後它將每個餐館ID保存在數據庫中。但是,我不斷收到where r.id = samecuisine行上的錯誤Cannot implicitly convert type 'System.Linq.IQueryable<int>' to 'int'EF代碼首先不能將類型轉換爲int

任何幫助將不勝感激。

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(); 

回答

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

您的查詢

var samecuisine = (from r in db.Reviews 
        where r.Cuisine == review.Cuisine 
        select r.id); 

返回IQueryable<int>,並非實際int

嘗試檢索.FirstOrDefault(),這會產生第一個結果(或默認值0)。