2017-11-01 1 views
0

약간의 도움이 필요합니다 ... ICollection 중첩 된 엔터티가 있습니다. 작업 그룹 (AdjudicationHead)과 AdjYearFFI을 그룹화해야 할 때 그룹에 대한 속성으로 AdjYearFFI을 설정할 수 없습니다.LINQ에서 ICollection의 중첩 된 속성별로 그룹화하는 방법?

엔티티 :

public class AdjudicationHead : BaseEntity 
{ 
    public virtual int Work { get; set; } 
    public virtual int AdjYear { get; set; } 
    public virtual string AdjType { get; set; } 
    public virtual long AdjNumber { get; set; } 
    //Navigation 
    public virtual ICollection<AdjudicationDetail> AdjudicationDetails { get; set; } 
} 

public class AdjudicationDetail : BaseEntity 
{ 
    public virtual int AdjYearFFI { get; set; } 

    //FK 
    public virtual int AdjYear { get; set; } 
    public virtual string AdjType { get; set; } 
    public virtual long AdjNumber { get; set; } 
    //Navigation 
    public virtual AdjudicationHead AdjudicationHead { get; set; } 
} 

이 내가 뭘하려 :

public object GetDataCurvaInversionActual() 
{ 
    var query = UoW.GetRepository<AdjudicationHead>() 
    .GroupBy(q => new { q.Work, q.AdjudicationDetails.AdjYearFFI }); 
    var entities = query.ToList(); 
    var result = Mapper.Map<IList<AdjudicationHead>, IList<Dtos.AdjudicationHead>>(entities); 
    return result; 
} 

오류 :

'System.Collections.Generic.ICollection does not contain a definition for AdjYearFFI'

+0

'AdjudicationDetails'는'AdjudicationDetail' 타입의 아이템 컬렉션을위한 속성입니다. 따라서이 컬렉션에 정의 된 'AdjYearFFI'속성이 없습니다. – Christos

+0

linq 쿼리에 AdjudicationDetails 컬렉션을 포함 시켰습니까? 귀하의 케이스에있는 ICollection 즉 AdjudicationDetails는 linq에 의해 지연로드됩니다. 이 컨텍스트와 같은 것을 query에 포함시켜야합니다 .AdjudicationHead.Includ (a => a.AdjudicationDetails) .ToList() –

+0

부모 클래스의 속성과 키의 속성으로 구성된 복합 키를 그룹화하려고합니다. 일대 다 관계를 가진 자식 컬렉션. 레벨을 선택해야합니다 - 부모가 자식에 대해 First 또는 Max와 같은 집계를 사용해야하는 경우 및 자식 수준에서 그룹화하려는 경우 각 자식에서 반복하기 위해 부모를 병합해야 할 가능성이 높습니다 에 의해 그룹 전에. – StuartLC

답변

1

프로에게 여기에서 불쾌한 점은 ICollection<AdjudicationDetail>AdjudicationDetail의 모음이고 AdjudicationDetail (주석으로 표시됨)이 아니기 때문에 AdjYearFFI 속성이 없음을 나타냅니다. 그것은 ICollection 유형의 속성 만 가질 것입니다.

당신이 그룹 AdjudicationDetail 년대하려는 경우, 당신은이 쿼리를 사용할 수 있습니다에 지금

var query = UoW.GetRepository<AdjudicationDetail>() 
.GroupBy(d => new { d.AdjudicationHead.Work, d.AdjYearFFI }); 

당신의 query 당신은 당신의 키는 WorkAdjYearFFI와 익명의 유형이 키있는 콜렉션을 가지고 필드 및 요소에는 AdjudicationDetail 개체가 있습니다.

+0

그게 내 문제를 해결, 답변 주셔서 감사합니다! –

+0

안녕하세요, 잘 듣고 싶습니다! 그리고 행운을 빌어! –

관련 문제