我的课程定义如下:
public class SearchResult
{
public Customer Customer { get; set; }
public Receipt Receipt { get; set; }
public IEnumerable<ReceiptDetail> ReceiptDetail { get; set; }
}
在我的Linq查询中,我想返回一个SearchResult记录,但在返回ReceiptDetail列表时遇到问题。如果我这样做:
var list=(from cust in dbContext.Customers
join rec in dbContext.Receipts on cust.IdCustomer equals rec.IdCustomer
join recdet in dbContext.ReceiptDetails on rec.IdReceipt equals recdet.IdReceipt
select new SearchResult
{
Customer=cust,
Receipt=rec,
ReceiptDetail = (from r1 in recdet select r1).ToList() // COMPILER ERROR HERE
}).ToList();
我得到&#34;无法找到源类型ReceiptDetail的查询模式的实现&#39;选择&#39;找不到&#34;。
我做错了什么?
答案 0 :(得分:1)
嗯,recdet
来自这里:
join recdet in dbContext.ReceiptDetails on rec.IdReceipt equals recdet.IdReceipt
这意味着它是单收据明细。您之后尝试将其用作集合:
from r1 in recdet select r1
我怀疑你真的想要一个小组加入:
join recdet in dbContext.ReceiptDetails on rec.IdReceipt equals recdet.IdReceipt
into recdets
...
ReceiptDetail = (from r1 in recdets select r1).ToList()
或更简单地用于后一部分:
ReceiptDetail = recdets.ToList()