//---------整批核算主體匯總表
var result = from r in DsOutOrder.Tables[1].AsEnumerable() //DtAllShd.AsEnumerable()
where r["TempCol_bj"].ToString() !="Del"
group r by r.Field<string>("hszt") into g
select new
{
g_hsztjc = g.Key,
g_ccxs = g.Sum(r => r.Field<Double>("ccxs")), //ccxs欄位值有NULL
//g_ccxs = g.Sum(r => r.Field<Double>("ccxs")),
g_tjmd = g.Sum(r => r.Field<Double>("tjmd")),
g_fymd = g.Sum(r => r.Field<Double>("fymd")), //fymd欄位值有NULL
g_sdmd = g.Sum(r => r.Field<Double>("sdmd"))
};
DgvTotalHszt.Rows.Clear();
Double[] zSum = new Double[] { 0, 0, 0, 0 };
foreach (var re in result) //程式到這就不執行了
{
int rowIndex = DgvTotalHszt.Rows.Add();
DgvTotalHszt.Rows[rowIndex].Cells[0].Value = re.g_hsztjc;
DgvTotalHszt.Rows[rowIndex].Cells[1].Value = re.g_ccxs;
DgvTotalHszt.Rows[rowIndex].Cells[2].Value = re.g_tjmd;
DgvTotalHszt.Rows[rowIndex].Cells[3].Value = re.g_fymd;
DgvTotalHszt.Rows[rowIndex].Cells[4].Value = re.g_sdmd;
zSum[0] += re.g_ccxs;
zSum[1] += re.g_tjmd;
zSum[2] += re.g_fymd;
zSum[3] += re.g_sdmd;
}
int rowIndex2 = DgvTotalHszt.Rows.Add();
DgvTotalHszt.Rows[rowIndex2].Cells[0].Value = "合 計";
DgvTotalHszt.Rows[rowIndex2].Cells[1].Value = zSum[0];
DgvTotalHszt.Rows[rowIndex2].Cells[2].Value = zSum[1];
DgvTotalHszt.Rows[rowIndex2].Cells[3].Value = zSum[2];
DgvTotalHszt.Rows[rowIndex2].Cells[4].Value = zSum[3];
//--------------------------------
欄位ccxs、tjmd、fymd、sdmd 4個欄位都有數值時正常,有NULL時會有例外,運行到 foreach 時就沒了。
uj5u.com熱心網友回復:
試試g_fymd = g.Sum(r => r.Field<Double?>("fymd")??0)
uj5u.com熱心網友回復:
樓上的正解。uj5u.com熱心網友回復:
受益良多,謝謝博主分享uj5u.com熱心網友回復:
現在的csdn怎么這么少人解答呀。實在沒辦法等解答了,昨天自己折騰了半天倒是可以了,在這里供大家參考:檢查r是否為null如果是null回傳0,人在外面,回頭把原嗎補上。uj5u.com熱心網友回復:
#1 正解。其實就是 Double+null導致的問題。
所以要把null轉換為0
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/14606.html
標籤:C#
上一篇:請教多任務該如何寫法
下一篇:asp.net 圖片控制元件動態顯示圖片 Image的ImageUrl='<%# Eval("pro_image") %>’
