2017-02-07 1 views
2

에서 중복 요소를 제거 :Linq에 : 그룹 개체 및 그래서이 클래스 구조가 자신의 자식 요소

public class ObjectCode 
{ 
    public string Code { get; set; } 
} 

class Configuration 
{ 
    public int Id { get; set; } 

    public string Name { get; set; } 

    public IEnumerable<ObjectCode> Objects { get; set; } 
} 

내가 여러 공급자로부터 Configuration의 목록을 수신하고 있습니다. 내 문제는 ID로 이러한 개체를 그룹화하는 방법을 모르고 결과 엔티티에있는 모든 Configuration 개체의 뚜렷한 ObjectCode 개체를 넣는 것입니다. GroupBy 각 그룹 내부

답변

2

사용 SelectMany :

var res = congigs 
    .GroupBy(c => new {c.Id, c.Name}) 
    .Select(g => 
     new Configuration { 
      Id = g.Key.Id 
     , Name = g.Key.Name 
     , Objects = g 
       .SelectMany(c => c.Objects) 
       .GroupBy(c => c.Code) 
       .Select(gg => gg.First()) 
     } 
    ).ToList(); 

은 상기와 같은 IdConfig 객체는 동일한 Name S가 있다고 가정한다.

+0

네, 그 대답은 제가 찾고있는 것이 었습니다. 나는 내가 허락하는대로 곧 그것을 받아 들일 것이다. 고맙습니다. –