2013-04-03 35 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

相關問題