我有一个对象:
public class Ticket
{
public string EventName {get;set;}
public string Count {get;set;}
public string Price {get;set;}
... other properties;
}
Run Code Online (Sandbox Code Playgroud)
测试:
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 });
Run Code Online (Sandbox Code Playgroud)
我想获得具有以下属性的匿名对象:EventName, TicketCount, Price
并按事件名称"分组".
对于上面的示例,结果必须是:
匿名对象必须包含两个记录:
EventName = Test, TicketCount = 3, Price = 300
EventName = Test2, TicketCount = 1, Price = 50
Run Code Online (Sandbox Code Playgroud)
我没有完成的代码:
var groupedByEvent = tickets.GroupBy(t => t.EventName);
var obj = new {EventName = seatsByEvent.Select(t=>t.Key), TicketCount = seatsByEvent.Sum(???)}
Run Code Online (Sandbox Code Playgroud)
怎么解决这个?
Tim*_*ter 13
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);
Run Code Online (Sandbox Code Playgroud)
首先你必须正确设置你的 POCO 类:
public class Ticket
{
public string EventName {get;set;}
public string Count {get;set;}
public int Price {get;set;}
public int TicketCount { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
Price必须是 and int 并且也像 the TicketCount,这必然是求和。
然后 linq 查询将如下所示:
var events = tickets.GroupBy(t => t.EventName).Select(g => new
{
EventName = g.Key,
TicketCount = g.Sum(t => t.TicketCount),
Price = g.Sum(t => t.Price)
});
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
10719 次 |
| 最近记录: |