2013-05-29 4 views
1

나는 반복 된 값을 가진 객체 컬렉션을 가지고 있습니다. 그 객체는 다음과 같습니다 :linq를 사용하여 병합 컬렉션

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

그리고 나는 List 컬렉션의 각 회사에 대해 여러 인보이스가 있습니다. 콜렉션, 개별 회사의 오브젝트를 병합하고 동시에 InvoiceValues를 추가하려면 어떻게합니까? 나는 Linq을 사용하여 그것을하고 싶다!

+1

당신이 원하는 최종 출력은 무엇을? 익명 유형? 어떤 속성에 포함됩니까? – haim770

+1

아무 것도 시도해 보셨습니까? 그렇다면 코드를 게시하고 문제가 무엇인지 게시하십시오. 그렇지 않은 경우 : 왜 안 되니? –

+0

입력과 예상 출력의 예를 들어 주시겠습니까? –

답변

6

사용 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) }); 
+0

'Select '는 다음과 같이 보일 것이다.'Select (g = new InvoiceCompany {Company = g.Key, InvoiceValue = g.Sum (x => x .InvoiceValue)})'. 이유 : OP 상태 : * "자신의 InvoiceValues를 동시에 추가"* –

+0

맞아, 고마워. 지금 편집되었습니다. – gzaxx

2

당신은 문에 의해 그룹을 사용할 수 있습니다.

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

회사가 그룹에 InvoiceValue을 시도하고 합계 계산 :

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