在C#中编写以下函数的较短方法?

时间:2011-01-11 18:00:19

标签: c#

我有这个功能 -

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

使用?:或其他可能的东西有更短的方法吗?

5 个答案:

答案 0 :(得分:11)

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

请注意,这会返回double,我认为这是真正想要的(一堆整数的平均值在逻辑上不是整数)。如果需要,您可以将其强制转换为int,或者如果您想要一直坚持整数数学:

var seq = GetWeeklyValues().DefaultIfEmpty();
return seq.Sum() / seq.Count();

答案 1 :(得分:2)

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

或:

public int GetAvgResult()
{
    return GetWeeklyValues().DefaultIfEmpty().Average();
}

答案 2 :(得分:2)

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

这就像我试图做到的那样短暂。是否有一个特定的原因(除了代码高尔夫)你正在尝试低字符数?

答案 3 :(得分:1)

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

答案 4 :(得分:1)

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