わかりました、次の作業を行うことができました
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();
}
先に進み、プリミティブ ticket_id、title、care_of_email、および filename を含む独自のクラス (myObject) を作成しました。私の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;
}