[英]create anonymous object via 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
和按事件名稱“分組”。
對於上面的示例,結果必須是:
匿名對象必須包含兩個記錄:
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);
var groupedByEvent = tickets.GroupBy(t => t.EventName);
var obj = groupByEvent.Select(group => new {
EventName = group._Key,
TicketCount = group.Sum(x => x.TicketCount),
Price = group.Sum(x => x.Price)
});
首先,你必須正確設置你的POCO課程:
public class Ticket
{
public string EventName {get;set;}
public string Count {get;set;}
public int Price {get;set;}
public int TicketCount { get; set; }
}
Price
必須是和int,也像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)
});
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.