c# - 如何让linq将数据从一种形式转换为另一种形式

标签 c# linq

假设我有对象:

public class PaymentHeader
{
   public Payee Payee { get; set; }
   public List<Payment> Payments { get; set; }
}

public class Payment
{
   public int Amount { get; set; }
}

public class Payee
{
    public string Name { get; set; }
}

所以一个 PaymentHeader 有一个 Payee 和一个 Payments 列表。

我想要的是将这些数据转换成稍微不同的格式。

所以我在寻找 List<Payee>每个收款人都有一个 List<PaymentHeader>

我开始了:

var data = paymentHeaders.GroupBy(x => x.Payee)

所以在这里我试图获得所有收款人及其相关的 PaymentHeaders。我认为这是正确的起点,但我不知道如何进一步。我想我需要创建一个匿名类型,但不确定如何将收款人放入列表并为每个收款人添加 PaymentHeaders 列表。

谁能帮我解决这个问题。

最佳答案

您需要构建一个类型来保存它,或者使用匿名类型:

var data = paymentHeaders.GroupBy(x => x.Payee)
               .Select(g => new { Payee = g.Key, Headers = g.ToList() })
               .ToList();

foreach(var d in data)
{
   Console.WriteLine("Payee {0} has {1} headers", d.Payee, d.Headers.Count);
}

关于c# - 如何让linq将数据从一种形式转换为另一种形式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16552634/

相关文章:

c# - 如何检测我是否在单一服务中运行?

c# - 我们可以将异步方法转换为表达式主体吗?

c# - 如何使用 C# 运行 .sql 脚本,还需要为 .sql 文件中声明的参数传递值?

c# - 使用 LINQ 计算与前一项的差异

c# - 如何使用 Action 过滤器更改输入参数

c# - 如何使用 MVC Html Helpers 截断字符串?

c# - Binding.StringFormat 不遵守 CultureInfo.CurrentCulture

c# - 在 linq 中使用内部连接

.net - 对只有 GetEnumerator() 的对象使用 LINQ

C# Linq 选择两个表从一个表中选择 MAX 日期