如何在VB

时间:2017-04-21 10:08:51

标签: vb.net list group-by

在我向C#here提出类似问题之前。我现在正试图将其复制到VB中。

我的代码中有一个类,如下所示:

 Public Class TariffVariations
    Public Property TariffCode() As String
        Get
            Return m_TariffCode
        End Get
        Set(value As String)
            m_TariffCode = value
        End Set
    End Property
    Private m_TariffCode As String

    Public Property Eye() As String
        Get
            Return m_Eye
        End Get
        Set(value As String)
            m_Eye = value
        End Set
    End Property
    Private m_Eye As String

    Public Property Count() As Integer
        Get
            Return m_Count
        End Get
        Set(value As Integer)
            m_Count = value
        End Set
    End Property
    Private m_Count As Integer
End Class

我正在循环转发器以构建此变体列表。我的列表中有8个对象,每个眼睛有4个变体。 我现在正试图遍历该列表并计算选择项目的次数,因此计算。

我查看了herehere有关如何处理群组的示例。我还将我的代码从C#从我之前的问题转换为VB。

我最终得到了适合我代码的这两个样本。请原谅命名约定:

    Dim lstNew = lstObjs.GroupBy(Function(c) c.TariffCode).Select(Function(c) New TariffVariations() With {.Eye = c.Key})

        Dim newCarList = lstObjs.GroupBy(Function(c) New With { _
 c.Eye, _
 c.TariffCode _
}).[Select](Function(carGroup) New TariffVariations() With { _
  .Eye = carGroup.Key.Eye, _
  .TariffCode = carGroup.Key.TariffCode, _
  .Count = carGroup.Sum(Function(c) c.Count) _
}).ToList()

现在在这两个列表中,而不是它们只折叠到2个对象,每个对象用于左眼和右眼,具有相同的代码和计数,而是将8保留在正在分组的列表中。

如何正确排序这些列表?我在这里做错了什么?

1 个答案:

答案 0 :(得分:0)

获取我的列表后,我使用以下内容来获取我想要的值:

     Dim lst = From item In lstObjs
               Order By item.TariffCode, item.Eye
               Group By item.TariffCode, item.Eye
               Into grp = Group, Sum(item.Count)
               Order By TariffCode, Eye
               Select Sum

     Dim canCont As Boolean = True

     For Each num As Integer In lst
        If num > 1 Then
           canCont = False
        End If
     Next

哪个适合我?