LINQ not checking for null
本文关键字:null for checking not LINQ | 更新日期: 2023-09-27 18:06:14
下面的代码应该取每行学费的简单平均值,但是需求规定了导入的数据集允许空值。
下面一行没有正确检查值,我得到错误:"ArgumentNullException未被用户代码处理,值不能为空。"
TUITIONCurr = g
.Where(p => !object.Equals(p.Field<double>("TUITION"),null))
.DefaultIfEmpty()
.Average(p => p.Field<double>("TUITION")),
您应该比较DBNull.Value
,而不是null
:
TUITIONCurr = g
.Where(p => !object.Equals(p.Field<double>("TUITION"), DBNull.Value))
.Average(p => p.Field<double>("TUITION"));
一旦你过滤掉了空值,你就不需要DefaultIfEmpty()
调用了
代替DataRow.Field
方法,尝试使用DataRow.IsNull
。此外,您不需要调用DefaultIfEmpty()
。
例如:
TUITIONCurr = g
.Where(p => !p.IsNull("TUITION"))
.Average(p => p.Field<double>("TUITION")),