在List中返回List时出现Linq错误

时间:2012-10-02 21:38:13

标签: c# linq entity-framework

我的课程定义如下:

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;。

我做错了什么?

1 个答案:

答案 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()