c# - 使用 Linq 从表中提取数据

标签 c# .net linq

我有一个表格,如下图所示。我需要从根据国家/地区列出的表格中提取一个列表。而且没有重复的国家。因此,例如,中国将只出现一次,将添加其总工资,将添加其总债务,并分别添加所有其他列。所以它应该如下所示:

Country --- Totay Pay---Total Debt--- NetAmount

China--     (3.1+4.2)B--- (2.0+2.0)B----(8+4)B

India--     

Russia---

如果我们可以使用 LINQ 表达式,我会更喜欢。我尝试使用 GroupBy 和其他运算符,但无法理解。

Table of Data

最佳答案

GroupBy运算符是很好的方向 - 您应该按国家/地区分组并使用 one of its overloads 对其他值求和那:

Groups the elements of a sequence according to a specified key selector function and creates a result value from each group and its key.

假设数据如下:

var data = new List<Data>()
{
    new Data() { Country = "China", Index = 2, TotalPay = 3.1M, TotalDebt = 2.0M, NetAmount = 8.0M},
    new Data() { Country = "India", Index = 4, TotalPay = 2.1M, TotalDebt = 3.0M, NetAmount = 9.0M},
    new Data() { Country = "China", Index = 8, TotalPay = 5.1M, TotalDebt = 4.0M, NetAmount = 10.0M},
};

你可以这样写:

var results = data.GroupBy(x => x.Country, (key, elements) => new Data()
    {
        Country = key,
        Index = elements.Sum(v => v.Index),
        TotalPay = elements.Sum(v => v.TotalPay),
        TotalDebt = elements.Sum(v => v.TotalDebt),
        NetAmount = elements.Sum(v => v.NetAmount)
    });

关于c# - 使用 Linq 从表中提取数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24658514/

相关文章:

c# - 如何使用 C# 在异步方法中重用同步代码

c# - 如何在右上角放置一个 vtkActor2D?

C# 根据日期(月)和组拆分查询结果

.net - .NET 应用程序转向微服务——一些问题

c# - 过滤集合的算法

c# - 在列表的上限和下限之间找到一个值

c# - 在没有大量新调用的情况下转换结构的 C++ 数组?

c# - WPF 事件绑定(bind)到 ViewModel(对于非命令类)

.net - Visual Studio 文档 XML 注释标签中神秘的 "usage"标签

c# - 未知数量列表的交集 c# .net