Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/283.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# BLToolkit:如何使用LINQ获得主细节结果集?_C#_.net_Linq_Linq To Sql_Bltoolkit - Fatal编程技术网

C# BLToolkit:如何使用LINQ获得主细节结果集?

C# BLToolkit:如何使用LINQ获得主细节结果集?,c#,.net,linq,linq-to-sql,bltoolkit,C#,.net,Linq,Linq To Sql,Bltoolkit,以下是列表关联的示例用法,摘自: 在哪里 上面的代码抛出LinqException,并显示以下消息: 找不到“System.Collections.Generic.List”1[[OrderDetail,TestProject,Version=1.0.0.0,Culture=neutral,PublicKeyToken=null]]类型的转换器 使用普通的linq to sql提供程序,这将很好地工作。对于BLToolkit Linq提供程序,我不知道。虽然我没有使用BLToolkit,但您可以

以下是列表关联的示例用法,摘自:

在哪里

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


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

使用普通的linq to sql提供程序,这将很好地工作。对于BLToolkit Linq提供程序,我不知道。

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

也就是说,您可以定义一个名为
MyOrder
的类,该类具有属性
String ProductName
List OrderDetails
,然后将linq查询更改为类似以下内容:

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

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

谢谢你的回复。您能否建议普通LINQ to SQL提供程序将为此表达式生成什么SQL查询?您编写的查询在Linq2Sql中应该可以正常工作。对于BLToolkit,请查看:“此功能尚不受支持”非常感谢!这就是我想要的答案:还不支持。谢谢你的建议。不幸的是,您的代码引发了相同的错误。LINQ表达式解析器并不关心它是select子句中使用的普通类还是匿名编译器生成的类,在第一个示例中,它们都工作得很好。
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
};
from p in db.Product
select new MyOrder
{
  OrderDetails = p.OrderDetails,
  ProductName = p.ProductName
};