2017-07-10 35 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(); 
相关问题