2017-07-10 64 views
0

我有一個包含員工賬戶詳細信息的XML。我正在嘗試使用LINQ來計算總和。我有以下查詢:LINQ針對XML和Db給出了不同的結果

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

我還繼續解析數據到數據庫表中。當我運行它對我的XML我有一個不同的結果,當我運行它對我的數據庫我有一個不同的結果。我檢查瞭解析器並正確解析了所有條目。

我也運行了一個SQL查詢來計算總和,並與數據庫中的LINQ查詢匹配。由於我的解析器是正確的,真的不知道問題是什麼。

+3

嘗試'那裏account.Status.Trim()。ToLower將()== 「活動」' – FortyTwo

+0

這看起來不像是有效的LINQ到XML。在xml情況下,「帳戶」的確切類型是什麼。 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(); 
相關問題