簡體   English   中英

使用linq合並集合

[英]merge collection using linq

我有一組具有重復值的對象。 可以說對象是:

public InvoiceCompany
{
    public decimal InvoiceValue { get; set; }
    public string Company { get; set; }
}

並且清單集合中的每個公司都有多張發票。 如何合並集合中不同的公司中的對象,並同時添加其InvoiceValues? 我想用Linq來做!

使用GroupBy

var list = new List<InvoiceCompany>(); //your collection of invoices
var grouped = list.GroupBy(x => x.Company)
                  .Select(g => new InvoiceCompany { Company = g.Key, InvoiceValue = g.Sum(x => x.InvoiceValue) });

您可以使用group by語句。

List<InvoiceCompany> li = new List<InvoiceCompany>(){
     new InvoiceCompany { Company = "a", InvoiceValue = 1 },
     new InvoiceCompany { Company = "a", InvoiceValue = 2 },
     new InvoiceCompany { Company = "b", InvoiceValue = 1 },
     new InvoiceCompany { Company = "b", InvoiceValue = 2 }
};

var v = from a in li
        group a.InvoiceValue by a.Company into b
        select new { Company = b.Key, Invoices = b.ToList().Sum() };

嘗試按公司對您的InvoiceValue分組並計算總和:

var v =
from l in list
group l.InvoiceValue by l.Company
into g
select new InvoiceCompany()
{
    Company = g.Key,
    InvoiceValue = g.Sum()
};

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM