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"]);
拉风的咖菲猫
TA贡献1995条经验 获得超2个赞
问题是MemberNo可以为null。如果没有null检查,则不能使用First()的结果。而是使用g.FirstOrDefault()
。
var m = g.FirstOrDefault(); row["MemberNo"] = m != null ? "a" : "b";
慕尼黑的夜晚无繁华
TA贡献1864条经验 获得超6个赞
row["MemberNo"] = g.First().IsMemberNoNull() ? "a" : "b";
显然有一种IscolumnnameNull()
方法可以被调用来处理DBNull
值?
- 3 回答
- 0 关注
- 197 浏览
添加回答
举报
0/150
提交
取消