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」に暗黙的に変換することはできません。明示的な変換が存在します(キャストがありませんか?)

この問題を解決するには、「クエリ」で何をする必要がありますか?

4

2 に答える 2

3

Single()この場合、ほぼ確実に使用する必要があります。

return query.Single();

またはおそらくSingleOrDefault()

return query.SingleOrDefault();

それは、もしあれば、そのような結果が確実に1つだけになると仮定しています。(2つの違いは、一致するレコードがないSingleOrDefault場合に発生することです。nullを返しSingle、例外をスローします。

合法的に複数の一致が存在する可能性がある場合は、何をしたいのかを検討する必要があります。たとえば、First()/を使用できます。FirstOrDefault

于 2013-03-15T23:12:49.183 に答える
0

IQueryable<DoctorClass>返す必要がある場所に戻っていますDoctorClass

あなたが使用することができます:

return query.FirstOrDefault();

の最初のアイテムを返しますquery

于 2013-03-15T23:13:15.797 に答える