如何处理DBNull值

dataGrid.DataSource = customDS.customDT.AsEnumerable()  

                      .GroupBy(r => r.Field("someID"))                  

                      .Select(g => {                      

                          CustomDS.customRow row = customDS.customDT.NewcustomRow();                      

                          row["someID"] = g.Key;                      

                          row["Tradingdate"] = g.First().Tradingdate;                      

                          row["MemberNo"] = ((object)g.First().MemberNo == DBNull.Value) ? "a" : "b";                      

                          row["Amt"] = (decimal?)g.Sum(r => r.Field("Amt"));                      

                          return row;                  

                       }).CopyToDataTable();

我有抛出异常,因为上面的代码MemberNo是DBNull在customDT。在上述情况下,我不理解为已经通过转换为对象并与DBNull进行比较并将其硬编码转换为字符串a或b


炎炎设计
浏览 182回答 3
3回答

蓝山帝景

您可以像这样处理DBNull值:row["CancelledDate"] == DBNull.Value ? (DateTime?)null :                            Convert.ToDateTime(row["CancelledDate"]);

拉风的咖菲猫

问题是MemberNo可以为null。如果没有null检查,则不能使用First()的结果。而是使用g.FirstOrDefault()。var m = g.FirstOrDefault(); row["MemberNo"] = m != null ? "a" : "b";

慕尼黑的夜晚无繁华

row["MemberNo"] = g.First().IsMemberNoNull() ? "a" : "b";显然有一种IscolumnnameNull()方法可以被调用来处理DBNull值?
打开App,查看更多内容
随时随地看视频慕课网APP