2015-06-18 45 views
1

我想在IEnumerable上做一个Group By。然而每当我尝试完成时,我都会收到错误。GroupBy Linq IEnumerable错误

Dim query As IEnumerable(Of CreditItem) = _ 
    From credits In unprocessedCredits _ 
    Group credits By unprocessedCreditsGrouped = _ 
      New With {Key .Make = credits.Make, _ 
        Key .Part = credits.PartNumber, _ 
        Key .CustomerNumber = credits.CustomerNumber, _ 
        Key .OrderNumber = credits.OrderNumber} _ 
    Into Group _ 
        Select New CreditItem With { _ 
        .Make = unprocessedCreditsGrouped.Make, _ 
        .Part = unprocessedCreditsGrouped.PartNumber, _ 
        .CustomerNumber = unprocessedCreditsGrouped.CustomerNumber, _ 
        .OrderNumber = unprocessedCreditsGrouped.OrderNumber _ 
        }) 

我需要按多个属性组合,例如通过make,partnumber,customernumber。另外unprocessedCredits还包含字段“数量”,我将需要根据group by子句获得数量的总和。选择新的CreditItem不起作用。得到一些没有为指定参数指定的参数。

但是,我不知道我是否真的需要选择语句,因为我真的想要选择此ienumerable中的所有内容。

不只是这些属性,但我不认为这是可能的群体?

+0

http://stackoverflow.com/q/9997001/1070452 – Plutonix

+0

你得到什么错误?你的返回类型将是一个'IGrouping(AnoinymousType,Of CreditItem)',除非你稍后有一个'Select',你没有显示。 –

+0

编辑原帖以更清晰地反映。 – user3542850

回答

1

您可以创建一个直接为CreditItem分组变量:

Dim query As IEnumerable(Of CreditItem) = _ 
    From credits In unprocessedCredits _ 
    Group credits By unprocessedCreditsGrouped = _ 
      New CreditItem With _ 
         { _ 
          .Make = credits.Make, _ 
          .Part = credits.PartNumber, _ 
          .CustomerNumber = credits.CustomerNumber, _ 
          .OrderNumber = credits.OrderNumber _ 
         } _ 
    Into Group _ 
    Select unprocessedCreditsGrouped 
+0

我在New CreditItem上遇到错误。参数'sqlR'未指定为'Friend Sub New(sqlR As System.Data.SqlClient.SqlDataReader)'参数' – user3542850

+0

'CreditItem'必须具有无参数构造函数 –