2013-03-15 75 views
3
public DoctorClass GetById(int id) 
    { 
     using (var context = new EmrContext()) 
     { 
      var query = from d in context.Doctors 
         join c in context.Users on d.Id equals c.Id 
         where d.Id==id 
         select new DoctorClass { Email = c.Email, FirstName = c.FirstName, LastName = c.LastName, Post = d.Post }; 
      return query; 
     } 
    } 

下面是錯誤:無法隱式轉換類型 'System.Linq.IQueryable' 到 'Mvc.Models.DoctorClass'。存在明確的轉換(您是否缺少演員?)都轉換爲T

我需要用「查詢」來解決此問題嗎?

回答

3

你幾乎肯定要在這種情況下使用Single()

return query.Single(); 

或可能SingleOrDefault()

return query.SingleOrDefault(); 

這是假設有一定只有一個這樣的結果,如果有的話。 (這兩者之間的區別是,如果有沒有匹配記錄會發生什麼SingleOrDefault將返回null; Single將拋出一個異常

如果可能有多個匹配合理,你應該考慮要發生什麼。你可以使用First()/FirstOrDefault,例如

+0

謝謝,我變得如此studid:/ – user2167382 2013-03-15 23:19:53

+0

但如果查詢不包含元素? Single()填充返回異常? – user2167382 2013-03-15 23:26:43

+0

那時SingleOrDefault可以派上用場。 – 2013-03-16 00:14:39

0

您正在返回IQueryable<DoctorClass>你需要返回DoctorClass

你可以使用:

return query.FirstOrDefault(); 

哪個會返回query中的第一項。

+0

謝謝你的回覆) – user2167382 2013-03-16 00:06:08