2017-07-10 7 views
0

xmlには従業員のアカウントの詳細が含まれています。 LINQを使用して合計の合計を計算しようとしています。私は次のクエリを持っています:LINQはXMLとDbに対して異なる結果を出します

var totalSum = (from account in accounts 
       where account.Status == "active" 
       select account.Balance).Sum(); 

また、データをデータベーステーブルに解析しました。私は私のXMLに対してそれを実行すると私は別の結果を持っていると私は私のデータベースに対してそれを実行するとき、私は別のものがあります。私はパーサーをチェックし、すべてのエントリが正しく解析されています。

また、SQLクエリを実行してSumを計算し、そのクエリはLINQクエリと一致していました。私のパーサが正しいので、問題が何であるかは本当に分かりません。

+3

は '試し働くべきところaccount.Status.Trim()。TOLOWERを()== "アクティブ"'有効にLINQからXMLのようには見えません – FortyTwo

+0

。 xmlの場合、 'accounts'の正確な型は何ですか? Linq-to-SQLのケースでは何ですか? – juharr

+0

結果はどのくらい違うのですか?丸め誤差のレベルが異なりますか、または数え切れないほどのデータが異なるでしょうか? – Blorgbeard

答えて

7

大文字の小文字で、または末尾に空白がないレコードステータスがすべて「アクティブ」になっていない可能性があります。

accountsDbSetオブジェクトの場合、デフォルトの大文字と小文字を区別しない設定で設定されます。したがって、where式は "Active"または "ACTIVE"と一致します。しかし、accountsがメモリにある場合、それは一致しないため、異なる結果が得られます。

これは

var totalSum = (from account in accounts 
     where account.Status.Trim().ToLower() == "active" 
     select account.Balance).Sum(); 
関連する問題