Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/linq/3.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/entity-framework/4.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
Linq 复合群联接_Linq_Entity Framework - Fatal编程技术网

Linq 复合群联接

Linq 复合群联接,linq,entity-framework,Linq,Entity Framework,我想使用linq扩展方法对以下三个表进行组联接 顾客 命令 订单发货信息 客户可以有多个订单,而每个订单只能有一个OrderShippingInfo 所以我的目标是对这3个表进行组连接,并返回一个匿名对象,该对象有一个客户和一个{Order,OrderShippinfo}数组 我知道如何在客户和订单之间进行groupjoin,但不知道如何在集合中添加OrderShippInfo Customer.GroupJoin(Order, c=>c.customerID, o=>o.

我想使用linq扩展方法对以下三个表进行组联接

顾客 命令 订单发货信息

客户可以有多个订单,而每个订单只能有一个OrderShippingInfo

所以我的目标是对这3个表进行组连接,并返回一个匿名对象,该对象有一个客户和一个{Order,OrderShippinfo}数组

我知道如何在客户和订单之间进行groupjoin,但不知道如何在集合中添加OrderShippInfo

     Customer.GroupJoin(Order, c=>c.customerID, o=>o.CustomerID, (c,o)=> new {c,o})
非常感谢

怎么样:

 Customer.GroupJoin(Order.Join(OrderShippinInfo,
                               o=>o.OrderID,
                               s=>s.OrderID,
                               (o, s) => new { Order = o, ShippingInfo = s}),
                    c=>c.customerID,
                    oi=>oi.Order.CustomerID,
                    (c,oi)=> new {c,oi})
那么:

 Customer.GroupJoin(Order.Join(OrderShippinInfo,
                               o=>o.OrderID,
                               s=>s.OrderID,
                               (o, s) => new { Order = o, ShippingInfo = s}),
                    c=>c.customerID,
                    oi=>oi.Order.CustomerID,
                    (c,oi)=> new {c,oi})

谢谢,太棒了!您认为这种方法是可以接受的,还是应该分成两个linq语句来澄清问题?对我来说没关系,但这是一种单独的事情。你必须理解代码的作用,所以你必须决定它是可以的还是应该拆分。谢谢!您认为这种方法是可以接受的,还是应该分成两个linq语句来澄清问题?对我来说没关系,但这是一种单独的事情。您必须理解该代码的作用,因此您必须决定它是可以的还是应该拆分。