ciao,
lavora con un set di dati più piccolo, fintanto che stai testando la query. Cioè, non attingere direttamente da Entita.WPFSCA, ma creati una lista di person con pochissimi elementi.
Quando ho scritto la query nel post precedente non ero sicuro di aver ben compreso il criterio con cui vuoi estrarre i dati, quindi può darsi che la query non stia funzionando a causa di questo malinteso.
chiaramente i due record hanno numdoc e codice uguali
ok, anche datadoc è uguale? Vedo che nel raggruppamento hai inserito anche quel campo.
ho due record uno con importopag=100 e l'altro con importosca=50
ok, due record... il primo ha importopag=100, mentre importosca quanto vale? Il secondo ha importosca=50, mentre importopag?
Quella clausola Where che ho scritto ragiona così: per ogni record del gruppo, faccio la differenza tra importopag e importo sca. Poi sommo tutte queste differenze e se il risultato è zero, restituisco tutti i record del gruppo.
Se il tuo scopo è invece quello di estrarre solo alcuni records da ogni gruppo, allora questa query non funziona. Qui ogni gruppo di record viene restituito nella sua interezza o per niente.
Comunque, fai un esempio popolando a mano una lista, così hai pochi record e ci puoi ragionare meglio:
Dim lista As New List(Of person)
lista.Add(New person() With {.id = 1, .codice = "A", .numdoc = 1, .datadoc = DateTime.Today, .importopag = 100, .importosca = 0})
lista.Add(New person() With {.id = 2, .codice = "A", .numdoc = 1, .datadoc = DateTime.Today, .importopag = 0, .importosca = 50})
La query, applicata su questa lista, restituirà entrambi i risultati.
Se aggiungo un terzo elemento così, facente parte dello stesso gruppo:
lista.Add(New person() With {.id = 3, .codice = "A", .numdoc = 1, .datadoc = DateTime.Today, .importopag = 50, .importosca = 100})
La query non restituirà più nessun risultato perché la somma di tutti gli importopag del gruppo meno la somma di tutti gli importosca darà come risultato 0, valore che è stato filtrato dalla Where.
ciao
Modificato da BrightSoul il 25 gennaio 2012 20.44 -