如何在 LINQ 中按 ICollection 的嵌套 属性 进行分组?
How to group by a nested property of ICollection in LINQ?
我需要一些帮助...我有一个嵌套了 ICollection
的实体,当我需要按 Work (AdjudicationHead
) 和 AdjYearFFI
进行分组时,我做不到将 AdjYearFFI
设为 属性 进行分组。
实体:
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'
这里的问题是 ICollection<AdjudicationDetail>
是 AdjudicationDetail
的集合,而不是 AdjudicationDetail
(如评论所述),因此它没有 AdjYearFFI
属性。它只有 ICollection
类型的属性。
如果要对 AdjudicationDetail
进行分组,可以使用此查询:
var query = UoW.GetRepository<AdjudicationDetail>()
.GroupBy(d => new { d.AdjudicationHead.Work, d.AdjYearFFI });
现在,在您的 query
中,您有一个键控集合,其中您的键具有匿名类型,带有 Work
和 AdjYearFFI
字段,元素具有 AdjudicationDetail
对象。
我需要一些帮助...我有一个嵌套了 ICollection
的实体,当我需要按 Work (AdjudicationHead
) 和 AdjYearFFI
进行分组时,我做不到将 AdjYearFFI
设为 属性 进行分组。
实体:
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'
这里的问题是 ICollection<AdjudicationDetail>
是 AdjudicationDetail
的集合,而不是 AdjudicationDetail
(如评论所述),因此它没有 AdjYearFFI
属性。它只有 ICollection
类型的属性。
如果要对 AdjudicationDetail
进行分组,可以使用此查询:
var query = UoW.GetRepository<AdjudicationDetail>()
.GroupBy(d => new { d.AdjudicationHead.Work, d.AdjYearFFI });
现在,在您的 query
中,您有一个键控集合,其中您的键具有匿名类型,带有 Work
和 AdjYearFFI
字段,元素具有 AdjudicationDetail
对象。