Хорошо, мне удалось получить следующий рабочий
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();
}
Я пошел дальше и создал свой собственный класс (myObject), содержащий примитивы.
ticket_id, title, care_of_email и имя файла. Какие предметы я возвращаю в своем заявлении linq.
Я изменил свое утверждение, чтобы оно было
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>;
}
думая, что это сделает безопасность типов с помощью дженериков, но я получаю ошибку
«Не удалось преобразовать группу методов« AsQueryable »в тип без делегатов« System.Linq.IQueryable ». Вы намеревались вызвать метод?»
Возможно ли то, что я пытаюсь сделать?
Должен ли класс myObject реализовывать IEnumerable или IQueryable?
Или лучше построить объект MyObject из набора результатов linq, а затем просто вернуть из функции объект MyObject
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;
}