2014-04-23 41 views
-3

我如何讓這變成空?如何讓平均值爲空

public double? GetSignalAverage 
{ 
    get 
    { 
     var signalaverage = Gsmdata.Select(x => x.SignalStrength) 
            .Average(); 
     return Math.Round(signalaverage, 2); 
    } 
} 

SignalStrength是一個int

+3

在什麼條件它應該返回null? – dkozl

+0

有時signalstrength沒有價值 – user3240428

回答

1

檢查,如果集合爲空或空:

public double? GetSignalAverage 
{ 
    get 
    { 
     if(Gsmdata == null || GsmData.Count() == 0) 
      return null; 

     var signalaverage = Gsmdata.Select(x => x.SignalStrength) 
            .Average(); 
     return Math.Round(signalaverage, 2); 
    } 
} 
+1

謝謝你的建設性答案:) – user3240428

1

你必須申報SignalStrength作爲int?允許null值。 (如果不這樣,int將是其默認值,即0)。但即使如此,如果存在任何非空元素(請參閱documentation),即使如此,Average()也會簡單地忽略這些值。

如果他們都nullAverage將返回null,它可以捕獲並返回,就像這樣:

double? signalaverage = Gsmdata.Select(x => x.SignalStrength) 
           .Average(); 
if(signalaverage == null) 
{ 
    return signalaverage; // which is essentially 'return null;' 
} 
else 
{   
    return Math.Round(signalaverage, 2); 
}