如何使用LINQ在列表中获取属性的平均值?

5

我有这个对象:

public class BtnCountViews
{
    public BtnCountViews()
    {
    }
    public int DayOfYear { get; set; }
    public int Month { get; set; }
    public int Year { get; set; }
    public int BtnCount { get; set; }
    public int Views { get; set; }
}

我希望做的是从一组对象中获取Month = 5的Views平均值。

以下是获取列表数据的代码:

  public static List<BtnCountViews> btnCountViewsList = db2.Query<BtnCountViews>(sql);

btnCountViewsList.Where(b => b.Month == 5).Average(b => b.Views); - JohnyL
2个回答

9

尝试类似这样的操作;

var avg = btnCountViewsList.Where(x => x.Month == 5).Select(x => x.Views).DefaultIfEmpty(0).Average();

此外,我建议您在可能为空的集合中使用 DefaultIfEmpty。否则,如果 btnCountViewsList 为空,将抛出异常。

3
你可以尝试以下方案:
var averageViews = btnCountViewsList.Where(x=>x.Month==5) 
                                    .Average(x=>x.Views);

基本上,使用 Where 条件来筛选 BtnCountViews,以获取其 Month 等于5的记录,然后使用 Average 函数计算这些记录的 Views 的平均值。

1
及时修正代码 :) - JohnyL

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接