导致父实体中的一个字段是子实体集合的Linq查询
我正在尝试编写一个Linq查询,该查询将生成一个父实体,其中一个字段是其相关子实体的集合。例如,我有一个所有客户实体的集合和一个所有订单实体的集合。订单实体有一个名为customerPK的字段,其中包含到相关父客户实体的链接。我想创建一个Linq查询,将两个集合连接起来,并在客户实体的所有字段中加上一个附加字段,该字段是该特定客户实体的所有相关订单实体的集合对象。希望这能起到作用 编辑:根据本例更新代码以执行左外部联接。这现在包括没有订单的客户导致父实体中的一个字段是子实体集合的Linq查询,linq,Linq,我正在尝试编写一个Linq查询,该查询将生成一个父实体,其中一个字段是其相关子实体的集合。例如,我有一个所有客户实体的集合和一个所有订单实体的集合。订单实体有一个名为customerPK的字段,其中包含到相关父客户实体的链接。我想创建一个Linq查询,将两个集合连接起来,并在客户实体的所有字段中加上一个附加字段,该字段是该特定客户实体的所有相关订单实体的集合对象。希望这能起到作用 编辑:根据本例更新代码以执行左外部联接。这现在包括没有订单的客户 var query = from c in cus
var query = from c in customers
join o in orders on c.ID equals o.CustomerPK into joined
from j in joined.DefaultIfEmpty()
group j by c into g
select new { Customer = g.Key, Orders = g.Where(x => x != null) };
请注意,在选择订单分组时使用,其中
,是为了在此时过滤掉空订单,而不是最终为没有订单的客户提供包含单个空订单的分组
然后举例说明用法
foreach (var result in query)
{
Console.WriteLine("{0} (ID={1})", result.Customer.Name, result.Customer.ID);
foreach (var order in result.Orders)
{
Console.WriteLine(order.Description);
}
}
此示例生成一个包含两个字段的对象,即Customer,然后是一组相关订单,但您没有理由不能在查询中选择您在帖子中指定的Customer对象的各个字段。是否仍有修改此查询的方法,以允许没有任何订单的客户?这些客户不包括在结果中。@user54064:我现在已更新了答案,以便按照您指定的方式进行操作。很抱歉反应太慢,但我不知道如何做,直到我偶然发现了链接的示例。