如何让linq转换数据从一种形式到另一种

本文关键字:一种 另一种 linq 转换 数据 | 更新日期: 2023-09-27 18:13:39

假设我有对象:

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和一个payment列表。

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

我要的是List<Payee>每个收款人都有一个List<PaymentHeader>

我是这样开始的:

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

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

有谁能帮我一下吗

如何让linq转换数据从一种形式到另一种

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

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);
}