为了账号安全,请及时绑定邮箱和手机立即绑定

如何处理DBNull值

如何处理DBNull值

C#
炎炎设计 2021-04-30 13:13:43
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
查看完整描述

3 回答

?
蓝山帝景

TA贡献1843条经验 获得超7个赞

您可以像这样处理DBNull值:

row["CancelledDate"] == DBNull.Value ? (DateTime?)null : 
                          Convert.ToDateTime(row["CancelledDate"]);


查看完整回答
反对 回复 2021-05-16
?
拉风的咖菲猫

TA贡献1995条经验 获得超2个赞

问题是MemberNo可以为null。如果没有null检查,则不能使用First()的结果。而是使用g.FirstOrDefault()

var m = g.FirstOrDefault();
row["MemberNo"] = m != null ? "a" : "b";


查看完整回答
反对 回复 2021-05-16
?
慕尼黑的夜晚无繁华

TA贡献1864条经验 获得超6个赞

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

显然有一种IscolumnnameNull()方法可以被调用来处理DBNull值?


查看完整回答
反对 回复 2021-05-16
  • 3 回答
  • 0 关注
  • 180 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信