[英]How to use c# to perform summing data with type conversion from SQL using LINQ
我試圖總結一個類型為nvarchar(7)
的列,我首先需要將數據轉換為decimal(18, 7)
。
我使用此LINQ查詢:
var Data = queryBase.Select(q => new { totalVol = q.Collection.Sum(c => Convert.ToDecimal(c.Volume) }).FirstOrDefault();
但是我有一個例外
LINQ to Entities無法識別方法'System.Decimal ToDecimal(System.String)'方法...
任何幫助將不勝感激。
錯誤非常明顯。 EF未編程為將Convert.ToDecimal
調用轉換為SQL。
一些選項:
ExecuteQuery
調用它 您可以在執行Sum
之前使用Cast<double>
,如果數據庫無法轉換字符串,這將引發異常
var Data =
queryBase.Select(q =>
new
{
totalVol = q.Collection
.Select(c => c.Volume)
.Cast<double>()
.Sum()
}
).FirstOrDefault();
由於必須將Convert.ToDecimal轉換為SQL,因此EF不知道該怎么做。
因此,請首先執行queryBase.ToList()
(這將執行SQL,並且所有數據都作為對象存儲在內存中)。
為了最大程度地減少檢索到的數據的大小,請執行以下操作: queryBase.Select(/*here filter the string field*/).ToList().
然后,使用Convert
或Decimal.Parse
求和
嘗試這樣的事情:
var Data = queryBase.Select(c =>c.Volume).AsEnumerable().Sum(d => Convert.ToDecimal(d.Volume));
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.