2011-02-02 61 views
0

这里是清单协会从BLToolkit documentation采取用法的例子:BLToolkit:如何获得使用LINQ的主 - 细节结果集?

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,版本= 1.0.0.0,文化=中立,公钥=空]' 类型。

回答

0

使用正常的LINQ to SQL供应商,这将很好地工作。有了BLToolkit Linq提供程序,我不知道。

+0

感谢您的答复。您能否建议通过常规的LINQ to SQL提供程序为此表达式生成SQL查询? – yallie 2011-02-02 11:00:40

+0

你写的查询应该可以在Linq2Sql中正常工作。 对于BLToolkit,请上网:http://groups.google.com/group/bltoolkit/browse_thread/thread/85c00c8d80072e5c “此功能不支持呢。” – Magnus 2011-02-02 12:21:28

1

虽然我没有用过BLToolkit,你可以尝试使用一个类定义,而不是依赖于一个匿名类型。

也就是说,你可以定义一个名为MyOrder类,它具有性能String ProductNameList<OrderDetail> OrderDetails,然后改变你的LINQ查询是这样的:

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

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