Ok, ich habe es geschafft, folgendes zum Laufen zu bringen
public IQueryable getTicketInformation(int ticketID)
{
var ticketDetails = from tickets in _context.tickets
join file in _context.file_objects on tickets.ticket_id equals file.source_id
where tickets.ticket_id == ticketID
select new { tickets.ticket_id, tickets.title, tickets.care_of_email, file.filename };
return ticketDetails.AsQueryable();
}
Ich habe meine eigene Klasse (myObject) erstellt, die die Primitive enthält ticket_id, title, care_of_email und filename. Das sind die Elemente, die ich in meiner Linq-Anweisung zurückgeben werde.
Ich habe meine Aussage wie folgt geändert
public IQueryable<myObject> getTicketInformation(int ticketID)
{
var ticketDetails = from tickets in _context.tickets
join file in _context.file_objects on tickets.ticket_id equals file.source_id
where tickets.ticket_id == ticketID
select new { tickets.ticket_id, tickets.title, tickets.care_of_email, file.filename };
return ticketDetails.AsQueryable()<myObject>;
}
Ich dachte, dass es dadurch mit Generika typsicher wird, aber ich erhalte den Fehler "Die Methodengruppe 'AsQueryable' kann nicht in den nicht delegierten Typ 'System.Linq.IQueryable' konvertiert werden. Beabsichtigen Sie, die Methode aufzurufen?"
Ist das, was ich zu tun versuche, überhaupt möglich?
Muss die myObject-Klasse IEnumerable oder IQueryable implementieren?
Oder ist es am besten, das Objekt MyObject aus dem Linq Resultset zu konstruieren und dann nur aus der Funktion das Objekt MyObject zurückgeben
public myObject getTicketInformation(int ticketID)
{
....linq statement....
myObject o = null;
foreach (obj in linqstatemt)
{
o = new myObject();
o.ticket_id = obj.ticket_id
.......
}
return o;
}
0 Stimmen
Hinweis: Klassennamen werden in PascalCase geschrieben.