好的,我已经设法使以下工作
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?
还是最好从 linq 结果集中构造对象 MyObject ,然后从函数中返回对象 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;
}