3.829 messaggi dal 28 gennaio 2003
Data una datatable, con campi, codice, data, valore, vorrei eliminare tutte le righe che hanno doppioni di codice e data.

cercando ho trovato questo:

Dim dt1 As DataTable = dt.AsEnumerable().GroupBy(Function(x) x.Field(Of String)("codice")).[Select](Function(y) y.First()).CopyToDataTable()


per un solo campo. Non sono riuscito a convertirlo per due campi.

Un aiuto?

ciao
Modificato da pietro09 il 14 agosto 2018 12.28 -

Pietro
10.907 messaggi dal 09 febbraio 2002
Contributi
Ciao Pietro,
il raggruppamento deve essere fatto in base ad un oggetto di tipo anonimo con proprietà chiave, come in questo esempio.
Dim gruppi = dt.AsEnumerable().GroupBy(Function(riga) New With {Key .Codice = riga.Field(Of String)("codice"), Key .Data = riga.Field(Of DateTime)("data")})


In pratica, con questa espressione:
New With {Key .Codice = riga.Field(Of String)("codice"), Key .Data = riga.Field(Of DateTime)("data")

Crei un oggetto di tipo anonimo. Quando questo oggetto viene confrontato con altri oggetti dello stesso tipo, sarà reputato uguale se sono uguali i valori delle sue proprietà chiave "Codice" e "Data".

Questa è la documentazione sui tipi anonimi, leggi in particolare il paragrafo "Key properties".
https://docs.microsoft.com/en-us/dotnet/visual-basic/programming-guide/language-features/objects-and-classes/anonymous-types#key-properties

ciao,
Moreno
Modificato da BrightSoul il 14 agosto 2018 13.56 -

Enjoy learning and just keep making
3.829 messaggi dal 28 gennaio 2003
Perfetto!
Grazie

Pietro

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.