2017-07-10 3 views
0

Ich habe ein XML-Konto Details von Mitarbeitern enthalten. Ich versuche, die Summe Summe mit LINQ zu berechnen. Ich habe die folgende Abfrage:LINQ gibt verschiedene Ergebnisse gegen XML und Db

Ich ging auch weiter und analysierte die Daten in eine Datenbanktabelle. Wenn ich es gegen mein Xml laufen lasse, habe ich ein anderes Ergebnis und wenn ich es gegen mein db laufen lasse, habe ich ein anderes. Ich überprüfte den Parser und alle Einträge werden korrekt analysiert.

Ich habe auch eine SQL-Abfrage ausgeführt, um die Summe zu berechnen, die mit der LINQ-Abfrage gegen die DB übereinstimmt. Kann wirklich nicht herausfinden, was das Problem ist, seit mein Parser korrekt ist.

+3

Versuchen 'wo account.Status.Trim(). ToLower() == "aktiv"' – FortyTwo

+0

, die nicht wie gültig Linq-to-Xml sieht. In der xml-Fall, was ist die genaue Art von "accounts". Was ist das im Fall Linq-to-SQL? – juharr

+0

Wie unterschiedlich ist das Ergebnis? Rundungsfehler-Level unterschiedlich oder viele ungezählte Daten unterschiedlich? – Blorgbeard

Antwort

7

Sie haben wahrscheinlich nicht alle Ihre Datensatzstatus "aktiv" in Kleinbuchstaben oder ohne Leerzeichen.

Wenn accounts ein DbSet Objekt ist, wird es mit der Standard-Groß-/Kleinschreibung konfiguriert. Daher würde der Wo-Ausdruck immer noch mit "Aktiv" oder "AKTIV" übereinstimmen. Wenn jedoch accounts im Speicher ist, würde es nicht übereinstimmen und daher erhalten Sie unterschiedliche Ergebnisse.

sollten Diese

arbeiten
var totalSum = (from account in accounts 
     where account.Status.Trim().ToLower() == "active" 
     select account.Balance).Sum(); 
Verwandte Themen