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
C# 使用嵌套的select LINQ循环数组_C#_Linq_Nested Queries - Fatal编程技术网

C# 使用嵌套的select LINQ循环数组

C# 使用嵌套的select LINQ循环数组,c#,linq,nested-queries,C#,Linq,Nested Queries,我有以下数据结构(只是一个示例性的视觉表示): 如果Customer对象在其Orders[]中有多个Order条目,则我需要其中所有条目的总和。但通过这个查询,我只得到第一个订单的总和 如果我这样做: var sumEachCust = from c in customers let sum = 0.0m from o in c.Orders select new

我有以下数据结构(只是一个示例性的视觉表示):

如果
Customer
对象在其
Orders[]
中有多个
Order
条目,则我需要其中所有条目的总和。但通过这个查询,我只得到第一个订单的总和

如果我这样做:

var sumEachCust = from c in customers
                  let sum = 0.0m
                  from o in c.Orders
                  select new
                  {
                    c.Name,
                    sum =+ o.Product.Price * o.Quantity
                  };
然后,当
Customer
对象的
Orders[]
属性中存在订单实体时,我将多次获得该名称,我不希望这样

简单-只需一次所有订单的名称和总和

from c in customers
select new
{
     Name = c.name,
     OrderTotal = c.orders.Sum(o => o.product.price * o.quantity)
}

如果您真的想使用
let
,那么在这种情况下,您可以这样做

from c in customers
let sum = c.orders.Sum(o => o.product.price * o.quantity)
select new
{
    Name = c.name,
    OrderTotal = sum
}

如果您真的想使用
let
,那么在这种情况下,您可以这样做

from c in customers
let sum = c.orders.Sum(o => o.product.price * o.quantity)
select new
{
    Name = c.name,
    OrderTotal = sum
}

工作,是一个真正干净和简单的解决方案!谢谢!尽管如此,您能给我一个在查询中使用
let
和临时变量的例子吗,因为我是这样做的,并且想看看在这种情况下如何正确使用嵌套的
select
语句?@Milkncookiez请参阅更新,尽管您实际上根本不需要在这里使用
let
。对不起,我想询问一个带有
嵌套select
的示例,因为例如,如果我必须将所有客户的订单相加为一个总和(而不是将每个客户的订单分别相加),那么我将如何做?(假设我不完全确定如何使用嵌套查询的迭代逻辑)。@Milkncookiez要返回所有记录的总和,那么您只需执行
let sum=customers.sum(x=>x.orders.sum(o=>o.product.price*o.quantity))
-请记住,这将导致一个单独的查询。这是一个非常干净简单的解决方案!谢谢!尽管如此,您能给我一个在查询中使用
let
和临时变量的例子吗,因为我是这样做的,并且想看看在这种情况下如何正确使用嵌套的
select
语句?@Milkncookiez请参阅更新,尽管您实际上根本不需要在这里使用
let
。对不起,我想询问一个带有
嵌套select
的示例,因为例如,如果我必须将所有客户的订单相加为一个总和(而不是将每个客户的订单分别相加),那么我将如何做?(考虑到我不完全确定如何使用嵌套查询的迭代逻辑)。@Milkncookiez要返回所有记录的总和,您只需执行
let sum=customers.sum(x=>x.orders.sum(o=>o.product.price*o.quantity))
-记住这将导致单独的查询。
from c in customers
let sum = c.orders.Sum(o => o.product.price * o.quantity)
select new
{
    Name = c.name,
    OrderTotal = sum
}