2016-06-28 3 views
-1

첫 번째 질문 :내가 가지고 함께 목록에

을 중복 추가 List<Materiau>를 사용하여 ((MateriauIComparable<Materiau>를 구현하는 경우), 나는 모든 중복을 제거하고 두 Materiau이 동일 함께 (경우를 추가하고 싶습니다) 비교기는, 상기 제에 병합 목록에서 초) I는 += 또는 +을 사용하여 두 Materiau를 병합 할 때

Materiau는 ID와 양을 포함 제거, 동일한 ID를 유지하고, 양을 첨가

목록의 입력을 제어 할 수 없습니다.

List<Materiau> materiaux = getList().mergeDuplicates(); 

이 :)

+1

당신이 더 평등을 찾고 있기 때문에 더 나은 IEquatable 인터페이스를 구현하십시오 –

+1

직접 조사해 봤어? 아이디어는 특정 문제와 문제가있는 코드를 생각해 내고 사양을 작성하고 앉아서 누군가가 해결책을 쓸 때까지 기다리는 것입니다. –

+0

내가 잘못 묻는다면 미안 하네. 다음에 더 나아질 것입니다. 의견을 내 주셔서 감사합니다 :) – Eradash

답변

3

체크 아웃 Linq 시간 내 주셔서 감사합니다

나는 이런 식으로 뭔가를 싶습니다! 특히 GroupBy 방법.

당신이 SQL에 얼마나 익숙한 지 잘 모르겠지만 Linq는 SQL의 작동 방식과 비슷하게 콜렉션을 쿼리 할 수 ​​있습니다.

우리가이

List<Product> prodList = new List<Product> 
{ 
    new Product 
    { 
     ID = 1, 
     Quantity = 1 
    }, 
    new Product 
    { 
     ID = 2, 
     Quantity = 2 
    }, 
    new Product 
    { 
     ID = 3, 
     Quantity = 7 
    }, 
    new Product 
    { 
     ID = 4, 
     Quantity = 3 
    } 
}; 

이 상상 우리는 원 :

그것은 깊이 조금 당신이 완전히 생소한의 설명이지만, Code Project 멋진 예제가

을 요약하면 모든 중복 제품을 그룹화하고 수량을 합산합니다. 필요

var results = groupedProducts.Select(i => new Product 
{ 
    ID = i.Key, // this is what we Grouped By above 
    Quantity = i.Sum(prod => prod.Quantity) // we want to sum up all the quantities in this grouping 
}); 

붐으로 집계로,

var groupedProducts = prodList.GroupBy(item => item.ID) 

을 한 후 그룹에서 값을 선택합니다

우리는 할 수있다! 우리는

+0

이것은 잘 작동했습니다! : D 감사합니다!이것은 나의 다른 많은 문제를 너무나 해결했다. (나는 단지 나의 질문이 다른 것을 게시하기 전에 ok인지를보기 위해 기다렸다. -> 이것은 찰스 메거에 의해 언급되지 않았지만 다음 번에는 더 좋을 것이다) – Eradash

0
List<Materiau> distinctList = getList().Distinct(EqualityComparer<Materiau>.Default).ToList(); 
1

당신이 클래스

class Foo 
{ 
    public int Id { get; set; } 
    public int Value { get; set; } 
} 

var foocollection = new List<Foo> { 
    new Foo { Id = 1, Value = 1, }, 
    new Foo { Id = 2, Value = 1, }, 
    new Foo { Id = 2, Value = 1, }, 
}; 

다음 목록 안에 그들의 무리 당신이 할 수있는 그룹을 가지고 각 집계를 구축 말할 수 있습니다 집계 제품의 목록을 가지고 그룹

var foogrouped = foocollection 
    .GroupBy(f => f.Id) 
    .Select(g => new Foo { Id = g.Key, Value = g.Aggregate(0, (a, f) => a + f.Value) }) 
    .ToList();