2011-01-11 24 views
3

我有這個功能 -在C#中編寫以下函數的更簡短的方法是什麼?

public int GetAvgResult() 
{ 
var weeklyvalues=GetWeeklyValues();//gets list of weekly values. 
if (weeklyvalues.Count == 0) 
       return 0; 
      return (weeklyvalues.Sum()/weeklyvalues.Count); 
} 

是否有使用?:也許別的東西來寫這個較短的方法嗎?

+2

爲什麼你想把它寫短?我認爲這將是一個非常loooooooong功能。 – 2011-01-11 18:03:25

+0

就像我正在重寫一些代碼..所以我認爲看這可能有更好的方式來寫它..並可能學習一些新的方法..感謝大家的答案! – Vishal 2011-01-11 18:04:46

回答

11
public double GetAvgResult() 
{ 
    // Assumes GetWeeklyValues() never returns null. 
    return GetWeeklyValues().DefaultIfEmpty().Average(); 
} 

請注意,這會返回一個double,我以爲是你真的(一串整數平均是邏輯上不是整數)的東西。您可以根據需要將其轉換爲int,或者如果你想堅持整數運算一路:

var seq = GetWeeklyValues().DefaultIfEmpty(); 
return seq.Sum()/seq.Count(); 
2
public int GetAvgResult() 
{ 
    var weeklyvalues = GetWeeklyValues(); 
    return (weeklyvalues.Count != 0) ? (weeklyvalues.Sum()/weeklyvalues.Count) : 0; 
} 

或:

public int GetAvgResult() 
{ 
    return GetWeeklyValues().DefaultIfEmpty().Average(); 
} 
2
public int GetAvgResult() 
{ 
    var weeklyvalues = GetWeeklyValues(); //gets list of weekly values. 
    return weeklyvalues.Count == 0 ? 0 : weeklyvalues.Sum()/weeklyvalues.Count; 
} 

這是短我試圖做到這一點。是否有一個特定的原因(除了代碼高爾夫球),你正在嘗試低字符數?

1
public int GetAvgResult() 
{ 
var weeklyvalues = GetWeeklyValues();//gets list of weekly values. 
return (weeklyvalues.Count == 0) ? 0 : (weeklyvalues.Sum()/weeklyvalues.Count); 
} 
1
public int GetAvgResult() 
{ 
    var weeklyvalues=GetWeeklyValues();//gets list of weekly values. 
    return weeklyvalues.Count == 0 
     ? 0 
     : (weeklyvalues.Sum()/weeklyvalues.Count); 
} 
相關問題