如何编写GroupBy子句,它将从多个关系中检索多个记录?
我有以下结构:
public class Failure{
public virtual int IdFailure { get; set; }
public virtual Workstation Workstation{ get; set; }
}
public class Workstation{
public virtual int IdWorkstation { get; set; }
public virtual IList<WorksocketWorkstation> WorksocketWorkstation { get; set; }
}
public class WorksocketWorkstation{
public virtual int IdWorksocketWorkstation{ get; set; }
public virtual Worksocket Worksocket{ get; set; }
public virtual Workstation Workstation{ get; set; }
}
public class Worksocket {
public virtual int IdWorksocket { get; set; }
public virtual IList<WorksocketWorkstation> WorksocketWorkstation { get; set; }
}
我想要做的是通过相关的工程包对故障进行分组,包括由多对多关系产生的“重复”,所以如果我在分配给三个工作区的工作站上发生故障,我希望它被计算在内每个工作区。目前我正在使用这样的东西来获得我的结果:
GetFailures().GroupBy(g => g.Workstation.WorksocketWorkstation.FirstOrDefault().Worksocket.IdWorksocket)
但是因为我正在使用FirstOrDefault
,所以每个失败仅考虑单个Worksocket。我尝试使用SelectMany
代替或者从Worksockets端获取数据,基于此处已经回答的类似问题,但我无法理解任何想法并将其调整为我的需求,所以任何帮助或解释将不胜感激。
答案 0 :(得分:1)
GetFailures().SelectMany(g => g.Workstation.WorksocketWorkstation)
.GroupBy(g => g.Worksocket.IdWorksocket)