浮点数预设错误LINQ vs Query

时间:2018-02-08 13:13:51

标签: linq tsql dapper

我们将从使用Dapper到使用Entity框架。这种方法应该返回给定Id的升数。

示例:

const string query = @"
            SELECT Id, Sum(Litres) as Litres
            FROM Litres
            GROUP BY Id;

在这种情况下,结果应该是:

id:1 SumLitres:4.863 id:2 SumLitres:1.23

在实际情况中,有数千个条目,并且当使用dapper和Linq时,这些条目的总和的精确度是不同的。我们可以接受3个十进制预判,但不低于此。

小巧的查询:

context.Litres.Select(x => new { x.Id, x.Litres})
                    .GroupBy(x => x.Id)
                    .AsNoTracking()
                    .ToList() 
                    .Select(g => new { Id = g.Key, Litres = g.Sum(s => s.Litres) })
                    .ToList();

linq查询:

loaded: boolean

问题是结果在小数点后第二位有所不同,我不知道哪些查询给出了最高精度的结果?

任何人都知道如何提高精度或哪一个最高?

列Liters的数据类型为:real。

1 个答案:

答案 0 :(得分:0)

当从SQL Real转换为.Net Single时,可能会有一些舍入:Sql server real datatype, what is the C# equivalent?

您可以尝试使用实体上下文执行原始SQL:https://msdn.microsoft.com/en-us/library/jj592907(v=vs.113).aspx