2016-11-09 5 views
0

Ich habe ein Entity Framework API-Controller konvertieren und jetzt versuche ich, meine GetData() -Methode von anzupassen:kann nicht implizit Typ ‚System.Data.Entity.Infrastructure.DbSqlQuery‘ auf ‚System.Linq.IQueryable‘

public IQueryable<VIPPreviewTimeSlots> GetData() 
{ 
    return db.Data; 
} 

zu

public IQueryable<VIPPreviewTimeSlots> GetData() 
{ 
    return db.Data.SqlQuery("SELECT a,b,c FROM table INNER JOIN another table...."); 
} 

aber ich bekomme diese Fehlermeldung:

Cannot implicitly convert type 'System.Data.Entity.Infrastructure.DbSqlQuery’ to 'System.Linq.IQueryable’ 

Wie kann ich das ein IQueryab zu werfen le?

+0

Ich würde denken, durch Hinzufügen von .AsQueryable() bis zum Ende Ihrer Return-Anweisung würde funktionieren. Laut [dieser SO Frage] (http://stackoverflow.com/questions/26143571/using-sqlquery-to-get-iqueryable) können Sie jedoch nicht. Sie können die Funktionssignatur so ändern, dass ein IEnumerable –

+0

.AsQueryable() zurückgegeben wird. – user979331

+0

@PaulStoner Die SO-Antwort bezieht sich auf den Aufruf von '.AsQueryable' auf' .SqlQuery'. Wenn Sie die Funktionssignatur in IEnumerable ändern, kann sie nicht länger verkettet werden. Alles danach wird dann clientseitig statt serverseitig durchgeführt. '.AsQueryable' ist die richtige Antwort hier (und es wäre tatsächlich die richtige Antwort auf Ihre verknüpfte Frage, aber es hat Auswirkungen auf' .SqlQuery 'Auswirkungen, wo es hier nicht. –

Antwort

1

Verwenden Sie AsQuearable(). Aber wie ich in meinem Kommentar bemerkte, kann das Auswirkungen haben.

Verwandte Themen