Linq到sql,聚合列,按日期分组到listview中

Linq到sql,聚合列,按日期分组到listview中,sql,vb.net,linq,linq-to-sql,datacontext,Sql,Vb.net,Linq,Linq To Sql,Datacontext,好的,我有一个包含3列的listview控件: 年份|净总额|总收入 此外,我还有一个名为Orders的表,其中有几列,它们包含有关订单的信息,并存储它们所属客户的ID 问题是:如何使用(最好)linq(datacontext来自LinqToSql)查询该表以返回以下数据 我想搜索任何与发生的CustomerID匹配的条目,按年份对它们进行分组,分别合计总数并将它们添加到listview 我现在可以使用lamda表达式和聚合,只是不清楚如何使用(option Infert on,db是datac

好的,我有一个包含3列的listview控件:

年份|净总额|总收入

此外,我还有一个名为Orders的表,其中有几列,它们包含有关订单的信息,并存储它们所属客户的ID

问题是:如何使用(最好)linq(datacontext来自LinqToSql)查询该表以返回以下数据

我想搜索任何与发生的CustomerID匹配的条目,按年份对它们进行分组,分别合计总数并将它们添加到listview

我现在可以使用lamda表达式和聚合,只是不清楚如何使用(option Infert on,db是datacontext对象,CustomerID是int32变量):

我想我必须创建一个匿名类型,如下所示:

Dim tmpYears = From prevs In db.Orders Select New With {.CustID = prevs.CustomerID, .Year = prevs.PaymentDate.Year, .NetPurchase, .GrossPurchase}
但是如何在组中聚合购买列

Dim CustomerOrders = From ord In db.Orders Where Ord.CustomerID = custID Select ord
Dim tot = From O in CustomerOrders Select Aggregate netTot In O Into Sum(netTot.Price * netTot.Quantity * 1+ (netTot.Discount/100))
我想把两者合并


有什么建议吗?(我已经读过,但我想在Linq中使用它,因为这是一个团队项目,我们同意使用Linq而不是将.executeQuery等发送到db。此外,这是一个LinqToSQL解决方案,因此如果我能使用它会更好)

我不能保证我完全理解您的需求,但长话短说,您似乎想要显示订单,按年份分组,合计净值/总值,其中订单与提供的客户ID匹配

抱歉,如果语法有点错误,但我正在徒手

Dim results = db.Orders.Where(Function(n) n.CustomerId = customerId).GroupBy(Function(n) n.Date.Year, Function(key, values) New With {.Year = key, .NetTotal = values.Sum(Function(n) n.NetPurchase * n.Quantity * (1 + (n.Discount/100))), .GrossTotal = values.Sum(Function(n) n.GrossPurchase)})
这将为您提供一个匿名类型,其中包含根据我列出的要求填充的
年份
净总额
、和
总收入


编辑:也为这一行表示歉意,但我相信您可以根据口味对其进行重新格式化。

我不能保证我完全理解您的要求,但长话短说,您似乎希望显示按年份分组的订单,以及净值/总值的合计金额,其中订单与提供的客户ID匹配

抱歉,如果语法有点错误,但我正在徒手

Dim results = db.Orders.Where(Function(n) n.CustomerId = customerId).GroupBy(Function(n) n.Date.Year, Function(key, values) New With {.Year = key, .NetTotal = values.Sum(Function(n) n.NetPurchase * n.Quantity * (1 + (n.Discount/100))), .GrossTotal = values.Sum(Function(n) n.GrossPurchase)})
这将为您提供一个匿名类型,其中包含根据我列出的要求填充的
年份
净总额
、和
总收入


编辑:也为一行道歉,但我相信你可以根据口味重新编排。

我也是一个超级粉丝,即使知道一行是(或可能是)坏消息。你的问题的诀窍是
GroupBy
上的重载,但你现在可能已经发现了。我使用的重载有一个
resultSelector
,对于一行程序,我发现它是我最喜欢的选项。:-)你是对的,其中最好的部分(与大多数linq查询一样)结果是可枚举的……IT领域的生活很美好……有时:)谢谢你的伟大回答我也是一个超级粉丝,即使知道一行是(或可能是)坏消息。你的问题的诀窍是
GroupBy
上的重载,但你现在可能已经发现了。我使用的重载有一个
resultSelector
,对于一行程序,我发现它是我最喜欢的选项。:-)你是对的,这其中最好的部分(与大多数linq查询一样)结果是可枚举的……IT领域的生活很棒……有时:)谢谢你的回答