0
我們使用LINQ to SQL項目小數精度丟失。分組後,不會從與組密鑰相關的表中選擇記錄。運行分析器有助於發現在檢索記錄時添加的條件對於小數字段的精度較低。這是什麼解決方案?記錄不retriving當得到分組的記錄
var groupedSO = from so in db.SalesOrders
orderby so.BizDate, so.POSID ascending
where SalesOrders.Contains(so.POSID)
group so by
new
{
so.BizDate.Value.Date,
so.CurrRateMultp, //Decimal: Value in DB is 0.33333333
}
into grps
select grps;
當我們遍歷組,
foreach (var orders in groupedSO)
{
foreach (var order in orders)
{
//No records available
}
}
它選擇使用類似於SQL記錄到
select <Fields>
from Table
where CONVERT(DATE, [t0].[bizdate]) = @P0 AND @x4 = [t0].[currratemultp]
但@ X4的值= 0.3333在生成的SQL,而在DB值0.33333333
這會導致記錄無法回覆。
該字段以簡單的方式
[Column]
public decimal? CurrRateMultp { get; set; }
映射到SQL字段類型是
decimal(19, 8)
請幫忙更改所需添加什麼精度。
您可以使用decimal.Round(數,3),或在查詢 –
類似的東西在哪裏x4'來自那些被分配到'@價值?在通過groups_進行迴環時創建該SQL的代碼在哪裏?此外,數據庫中的CurrRateMultp列的確切類型是什麼? – juharr
檢查數據庫以查看類型是什麼。它看起來像數據庫是一個雙和C#是一個單一的,沒有任何意義。 C#十進制類型是96位。所以我懷疑數據庫是一個nvar(這是一個字符串),並且有一個從字符串到網絡庫中的界面中單個的轉換。 – jdweng