Pregunta

Tengo un archivo csv de este formart

 A,B,value
 a1,b1,10
 a2,b1,12
 a2,b1,15
 a2,b2,14
 a1,b1,12

que estoy convirtiendo como tabla de datos en mi aplicación.

 Dim enumerable = _dt.AsEnumerable

 Dim groupedResults = enumerable.GroupBy( _
                                   Function(x) _
                                        New With { _
                                                  .A = x.Item("A").ToString, _
                                                  .B = x.Item("B").ToString _
                                                 } _
                                        )

Esperaba que los resultados agrupados cuenten hasta 4 en lugar de los 5 que se muestran.
Básicamente no se agrupa por primera y quinta fila en un solo grupo.

Esperaba que el objeto con el mismo valor produjera la misma clave.

¿Cuál puede ser el motivo?

¿Fue útil?

Solución

Convierta las propiedades de tipo anónimo en inmutables: esa es la forma de lograr que la igualdad y el hash funcionen. (En C # todos los tipos anónimos son inmutables de forma predeterminada).

Prueba esto

 Dim enumerable = _dt.AsEnumerable

 Dim groupedResults = enumerable.GroupBy( _
               Function(x) _
                    New With { _
                              Key .A = x.Item("A").ToString, _
                              Key .B = x.Item("B").ToString _
                             } _
                    )

EDITAR: la parte Key significa que la propiedad es una clave para el tipo anónimo. Consulte la página de MSB de tipos anónimos VB para obtener más detalles.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top