Хорошо, мне удалось получить следующие рабочие
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 и filename. Какие элементы я возвращаю в своем операторе 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;
}