2013-04-03 39 views
0

我想将一个值与另一个值相除。式是这样的Linq:运算符'/'不能应用于'object'和'object'类型的操作数

如果(作业2 = 0,0,作业2 /作业1) 我写的代码是:

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

但是,得到误差,运算符“/”不能被应用于类型的操作数'对象'和'对象'。请建议如何用linq c#完成这项工作?

+2

两个lambda表达式的划分确实很有趣:) – Andomar

回答

1

结果选择器中已经有x参数。下面是正确的语法:

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

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

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

然而,在你的代码的问题是第二x =>

+0

对于没有值的列(即Job2为空或它的值为0.0),我得到“NaN”列。我该如何解决这个问题? – user1254053

相关问题