iT邦幫忙

1

linq sum 回傳不支援 double 嗎?

  • 分享至 

  • xImage
var rows = MiniExcel.Query(path, useHeaderRow: true, sheetName: "交易分析")
                       .GroupBy(x => new
                       {
                           Convert.ToDateTime(x.進場時間).Date
                       })
                       .Select(y => new
                       {
                           date = y.Key,
                           volume = y.Sum(z=> Convert.ToDouble(z.進場價格)*
                                              Convert.ToDouble(z.交易數量))                           
                       });

執行會發生
Cannot implicitly convert type 'double' to 'int'. An explicit conversion exists (are you missing a cast?)
主要原因為是 Sum 不支援 double?
請問這個問題可以怎麼解決?
謝謝!

fillano iT邦超人 1 級 ‧ 2023-03-18 15:49:15 檢舉
volume的型別?
Naclptz55 iT邦新手 5 級 ‧ 2023-03-19 10:19:42 檢舉
你的Query回傳的volume型別是int吧,把處理完的結果轉成int如何?volume = (int)y.Sum()
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

1 個回答

0
deh
iT邦研究生 1 級 ‧ 2023-03-21 22:23:24

可以使用 Convert.ToInt32 方法將 Sum 函數的結果轉換為 int 數據類型:

var rows = MiniExcel.Query(path, useHeaderRow: true, sheetName: "交易分析")
                       .GroupBy(x => new
                       {
                           Convert.ToDateTime(x.進場時間).Date
                       })
                       .Select(y => new
                       {
                           date = y.Key,
                           volume = Convert.ToInt32(y.Sum(z=> Convert.ToDouble(z.進場價格)*
                                              Convert.ToDouble(z.交易數量)))
                       });

我要發表回答

立即登入回答