通过LINQ创建匿名对象 [英] create anonymous object via LINQ

查看:153
本文介绍了通过LINQ创建匿名对象的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个对象:

public class Ticket
{
   public string EventName {get;set;}
   public string Count {get;set;}
   public string Price {get;set;}
   ... other properties;
}

用于测试:

var tickets = new List<Ticket>();
tickets.Add(new Ticket {EventName = "Test", TicketCount = 1, Price = 100});
tickets.Add(new Ticket { EventName = "Test", TicketCount = 2, Price = 200 });
tickets.Add(new Ticket { EventName = "Test2", TicketCount = 1, Price = 50 });

我想获取具有以下属性的匿名对象:EventName, TicketCount, Price 和按事件名称分组".
对于上面的示例,结果必须是:
匿名对象必须包含两个记录:

I want to get anonymous object with following properties: EventName, TicketCount, Price and "grouped" by event name.
For the example above the result must be:
anonymous object must contain two records:

EventName = Test, TicketCount = 3, Price = 300
EventName = Test2, TicketCount = 1, Price = 50

我未完成的代码:

var groupedByEvent = tickets.GroupBy(t => t.EventName);
var obj = new {EventName = seatsByEvent.Select(t=>t.Key), TicketCount = seatsByEvent.Sum(???)}

如何解决这个问题?

推荐答案

var result = tickets.GroupBy(t => t.EventName)
                    .Select(g  => new { 
                             EventName = g.Key, 
                             TicketCount = g.Sum(t => t.TicketCount), 
                             Price = g.Sum(t => t.Price)
                    });

foreach(var x in result)
     Console.WriteLine("EventName = {0}, TicketCount = {1}, Price = {2}"
                       , x.EventName , x.TicketCount , x.Price);

这篇关于通过LINQ创建匿名对象的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆