2011-01-11 8 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関数になると思った。 –

+0

ちょうど私がいくつかのコードを書き直す過程にあるように...私はこれを見て、それを書く良い方法かもしれないと思っていました。いくつかの新しい方法を学ぶかもしれません。 – Vishal

答えて

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

これは簡潔な賞を受賞しました。 – Skurmedel

+0

おかげさま...ありがとうございました! – Vishal

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); 
} 
関連する問題