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

时间:2013-05-14 20:53:11

标签: 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有一个收款人和一个付款清单。

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

所以我在List<Payee>之后,每个收款人都有List<PaymentHeader>

我开始说:

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

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

任何人都可以帮助我。

1 个答案:

答案 0 :(得分:4)

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

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