0

这是从BLToolkit 文档中获取的列表关联的示例用法:

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]]”类型的转换器。

4

2 回答 2

1

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

也就是说,您可以定义一个名为的类,该类MyOrder具有String ProductNameList<OrderDetail> OrderDetails,然后将您的 linq 查询更改为:

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

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

于 2011-02-02T10:18:42.480 回答
0

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

于 2011-02-02T09:44:23.747 回答