BLToolkit:如何使用LINQ获取master-detail结果集?

时间:2011-02-02 09:13:18

标签: c# .net linq linq-to-sql bltoolkit

以下是从BLToolkit documentation获取的列表关联的示例用法:

from p in db.Product
select new
{
  p.OrderDetails.Count,
  p.ProductName
};

,其中

class Product
{
  [PrimaryKey, Identity]
  public int ProductID;

  public string ProductName;

  [Association(ThisKey="ProductID",  OtherKey="ProductID")]
  public List<OrderDetail> OrderDetails;
}

是否可以获得包含每种产品订单详情的产品列表,如下所示:

from p in db.Product
select new
{
  Details = p.OrderDetails,
  p.ProductName
};

上面的代码抛出LinqException并显示以下消息:

找不到'System.Collections.Generic.List`1 [[OrderDetail,TestProject,Version = 1.0.0.0,Culture = neutral,PublicKeyToken = null]]'类型的转换器。

2 个答案:

答案 0 :(得分:1)

虽然我没有使用BLToolkit,但您可能会尝试使用您定义的类而不是依赖匿名类型。

也就是说,您可以定义一个名为MyOrder的类,其中包含属性String ProductNameList<OrderDetail> OrderDetails,然后将您的linq查询更改为:

from p in db.Product
select new MyOrder
{
  OrderDetails = p.OrderDetails,
  ProductName = p.ProductName
};

我不能保证这会起作用,但它可能值得一试(除非有人发布更明确的内容)。

答案 1 :(得分:0)

使用普通的linq到sql提供程序,这样可以正常工作。使用BLToolkit Linq提供程序,我不知道。