none
como i agrupar objetos ,mediante metodos de extension en visual basic.net RRS feed

  • Pregunta

  •   lp.Add(New persona With {.edad = 13, .idpersons = 2, .nombrePersona = "bill gates"})
            lp.Add(New persona With {.edad = 45, .idpersons = 2, .nombrePersona = "bill gates"})
            lp.Add(New persona With {.edad = 18, .idpersons = 8, .nombrePersona = "james gosling"})

            Dim sql = lp.GroupBy(Function(op) New With {.idPersona = op.idpersons, .nombrePersona = op.nombrePersona}, Function(op) op, Function(op, od) New With {.idPersona = op.idPersona, .nombrePersona = op.nombrePersona, .dt = od})

    '' al ejecutar el programa  hasta este punto deberia agrupar por  el idPersona y nombrePersona tan solo deberia devolver dos elementos y sus correpondientes listas de detalle pero devuelve tres elmentos el mismo codigo funciona en C#

    Public Class persona
            Public idpersons As String
            Public nombrePersona As String
            Public edad As Integer
        End Class

    domingo, 2 de diciembre de 2012 22:41

Todas las respuestas

  • no has intentado realziar lo mismo con la notacion de linq ? digo quizas resulte mas simple de visualizar donde esta el problema


    ojo quizas este sucediendo lo que se comenta aqui

    LINQ Group by with multiple properties in VB.Net

    o sea debes implementar el Equals() de una clase para poder separar el key compuesta

    saludos


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina

    lunes, 3 de diciembre de 2012 1:35
  •   lp.Add(New persona With {.edad = 13, .idpersons = 2, .nombrePersona = "bill gates"})
            lp.Add(New persona With {.edad = 45, .idpersons = 2, .nombrePersona = "bill gates"})
            lp.Add(New persona With {.edad = 18, .idpersons = 8, .nombrePersona = "james gosling"})

            Dim sql = lp.GroupBy(Function(op) New With {.idPersona = op.idpersons, .nombrePersona = op.nombrePersona}, Function(op) op, Function(op, od) New With {.idPersona = op.idPersona, .nombrePersona = op.nombrePersona, .dt = od})

    '' al ejecutar el programa  hasta este punto deberia agrupar por  el idPersona y nombrePersona tan solo deberia devolver dos elementos y sus correpondientes listas de detalle pero devuelve tres elmentos el mismo codigo funciona en C#

    Public Class persona
            Public idpersons As String
            Public nombrePersona As String
            Public edad As Integer
        End Class


    claro que cons sintaxis Linq sale pero cuando  haces el left join con sintaxis Linq se escribe demasiado codigo pero el left join con metodos de estencion usando el selectmany es mas legible por , todo por que al darse el caso que hagas union de varias tablas y aplicarles sobre eso una agrupacion con metodos de extension a mi parecer es mas legible ,

    lo que me parece  inusual es que en c# si funcione pero en visual basic.net no agrupe

    lunes, 3 de diciembre de 2012 1:45