Linq:运算符'/';无法应用于类型为';对象';和';对象';

Linq:运算符'/';无法应用于类型为';对象';和';对象';,linq,Linq,我想把一个值除以另一个值。公式是这样的 If(Job2=0,0,Job2/Job1) 我写的代码是: double empJob1Count = empYearMonthGroup .Where(x => x.Row["Job2"] != DBNull.Value) .Sum(x => x.Row.Field<double>("Job2")/ x => x.Row.Field<double>("Job1")); double em

我想把一个值除以另一个值。公式是这样的

If(Job2=0,0,Job2/Job1) 我写的代码是:

 double empJob1Count = empYearMonthGroup
     .Where(x => x.Row["Job2"] != DBNull.Value)
     .Sum(x => x.Row.Field<double>("Job2")/ x => x.Row.Field<double>("Job1"));
double empJob1Count=empYearMonthGroup
.Where(x=>x.Row[“Job2”]!=DBNull.Value)
.Sum(x=>x.Row.Field(“Job2”)/x=>x.Row.Field(“Job1”);

但获取错误时,运算符“/”不能应用于“object”和“object”类型的操作数。请建议如何使用linq c#?

执行此操作。您在结果选择器中已经有了
x
参数。以下是正确的语法:

double empJob1Count = empYearMonthGroup
     .Where(x => x.Row["Job2"] != DBNull.Value)
     .Sum(x => x.Row.Field<double>("Job2") / x.Row.Field<double>("Job1"));
double empJob1Count=empYearMonthGroup
.Where(x=>x.Row[“Job2”]!=DBNull.Value)
.Sum(x=>x.Row.Field(“作业2”)/x.Row.Field(“作业1”));

您可以使用支持空类型的
字段
扩展方法:

double empJob1Count = empYearMonthGroup
    .Where(x => x.Row.Field<double?>("Job2").HasValue)
    .Sum(x => x.Row.Field<double?>("Job2").Value / x.Row.Field<double>("Job1"));
double empJob1Count=empYearMonthGroup
其中(x=>x.Row.Field(“Job2”).HasValue)
.Sum(x=>x.Row.Field(“Job2”).Value/x.Row.Field(“Job1”);

但是,代码中的问题是第二个
x=>

两个lambda表达式的除法当然很有趣:)对于没有值的列,即Job2为空或其值为0.0的列,我得到“NaN”。我如何解决这个问题?