c# - 如何获取列表中多个列的总计并使用 LINQ 将其放入对象中?

标签 c# linq

如何使用 LINQ 获取列表中某些列的总数并将其放入对象中?

我有一个 list

List<History> a = getTodayData(); 

我的类(class)历史是这样的:

public class History
{
    public Int32 Id { get; set; }
    public string YYMMDD { get; set; }
    public int Quiz { get; set; }
    public int Views { get; set; }
    public int Clicks { get; set; }
    public int Points { get; set; }
}

我想要的是用每个浏览量、点击量和点数的总和来填充这个对象。

public class Today
{
    public int Views { get; set; }
    public int Clicks { get; set; }
    public int Points { get; set; }
}

一些帮助/建议将不胜感激。

最佳答案

使用 LINQ,您可以简单地分别计算总和:

Today today = new Today {
    Views = a.Sum(history => history.Views),
    Clicks = a.Sum(history => history.Clicks),
    Points = a.Sum(history => history.Points),
}

万一您遇到此解决方案的性能问题,您始终可以使用非 LINQ foreach 循环:

Today today = new Today();
foreach(History history in a) {
    today.Views += history.Views;
    today.Clicks += history.Clicks;
    today.Points += history.Points;
}

关于c# - 如何获取列表中多个列的总计并使用 LINQ 将其放入对象中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53155382/

相关文章:

.net - 如果使用 LINQ 进行查询,我们是否需要对排序进行单元测试?

c# - 使用 linq 更新对象的性能更好

c# - linq查询查找最大值和最小值的对象

c# - 如何使用 SqlFunctions.DateName 获取小时部分

c# - 以编程方式在类的每个属性上插入方法调用

c# - MVC Controller 操作中的通用类型

c# - 跨不同 Linq-to-SQL 上下文的实体相等性

c# - 将 vb6 转换为 c#

c# - Linq 按匹配数排序

c# - 获取两个数据行中的键值对差异?