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/3/arrays/12.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 - Fatal编程技术网

Linq只包括一对多关系中的一个对象

Linq只包括一对多关系中的一个对象,linq,Linq,我有两个一对多关系的表 一个订单有很多产品 我想在每个订单中列出一份免费产品的订单列表(每个订单一份) 我试过这样的方法: this.ObjectContext.ORDERS.Include("PRODUCTS").Where(e=>e.PRODUCTS.price == 0).OrderBy(e => e.Order); 但这是行不通的 还有其他方法吗 提前感谢。如果PRODUCTS是一个集合,您可以使用Any()扩展方法来确定是否有任何产品是免费的(或者,使用All()方法来确

我有两个一对多关系的表

一个订单有很多产品

我想在每个订单中列出一份免费产品的订单列表(每个订单一份)

我试过这样的方法:

this.ObjectContext.ORDERS.Include("PRODUCTS").Where(e=>e.PRODUCTS.price == 0).OrderBy(e => e.Order);
但这是行不通的

还有其他方法吗


提前感谢。

如果
PRODUCTS
是一个集合,您可以使用
Any()
扩展方法来确定是否有任何产品是免费的(或者,使用
All()
方法来确定是否所有产品都是免费的):

根据您对所需输出(所有带有可选免费产品的订单)的说明,您可以使用以下查询:

this.ObjectContext.ORDERS
                  .Include("PRODUCTS")
                  .Select(o => new {
                      Order = o, 
                      FreeProduct = o.PRODUCTS.FirstOrDefault(p => p.price == 0)
                  });

它将返回一个包含订单和免费产品的匿名类型序列(如果没有免费产品,则返回null)。

如果没有免费产品,会发生什么?它会在没有产品的情况下退回订单吗???@zapico不,它根本不会退回订单。没有免费产品的订单将被跳过。如果没有订单包含免费产品,您将得到一个空序列。:(是否有任何方法使其返回订单?或者我是否应该在其他查询中返回它们并同时返回两个列表?感谢您的帮助:)@zapico我想您只需要包含至少一个免费产品的订单?不,不,我希望所有订单都有一个免费产品,如果有的话(一个订单中不可能有多个免费产品)
this.ObjectContext.ORDERS
                  .Include("PRODUCTS")
                  .Select(o => new {
                      Order = o, 
                      FreeProduct = o.PRODUCTS.FirstOrDefault(p => p.price == 0)
                  });