如何在 Linq .NET 中检索一个表行和连接到第一行的行列表



我有特定的问题。我对SQL不太有经验,所以这可能是一个愚蠢的问题。我有以下课程

class StructuredResult
{
public Pay Pay{ get; set; }
public Processing Processing{ get; set; }
public Member Member { get; set; }
public StructuredResult()
{
}
}

这就是我得到的代码

var allPaying = (from pay in Entities.Pays
join prc in Entities.Processingss on pay.IDCalculation equals cal.IDCalculation
join mbr in Entities.Members on pay.IDMember equals mbr.IDMember
where pay.IDMember == IDMember
orderby prc.DateFrom descending
select new StructuredResult()
{
Pay = pay,
Processing = prc,
Member = mbr
}).ToList();

代码工作正常,我更改了在此处发布的内容,也许某些名称更改是不行的。我需要得到的是这个:

class StructuredResult
{
public Pay Pay{ get; set; }
public Processing Processing{ get; set; }
public Member Member { get; set; }
public List<PayDetail> PayDetails { get; set; }
public StructuredResult()
{
}
}

有谁知道这是否可能?付款明细与 Pay.ID = PayDetail.ID 相关联 提前致谢

为了也用PayDetail的集合填充StructuredResult,您需要使用Group Join。看:

  1. MSDN onGroupJoin
  2. 最后 Linq 到 实体加入 vs 组加入。

所以:

var allPaying = from pay in Entities.Pays
join prc in Entities.Processingss on pay.IDCalculation equals cal.IDCalculation
join mbr in Entities.Members on pay.IDMember equals mbr.IDMember
join d in Entities.PayDetails on pay.IDMember equals d.ID into details
where pay.IDMember == IDMember
orderby prc.DateFrom descending
select new StructuredResult()
{
Pay = pay,
Processing = prc,
Member = mbr,
PayDetails = details
};

我还建议,由于您使用的是 EF,请查看导航属性。通过以不同的方式定义类,您将以更少的资源获得更多的功能(例如,无需编写连接(

  1. MSDN - 实体框架关系和导航属性
  2. MSDN - 如何:使用导航属性导航关系

只是一个小提示 - 您正在定义一个在 id 中没有逻辑的默认构造函数。如果在实际代码中也是如此,则不需要它。它是自动定义的。

这可能有助于您:

var allPaying = (from pay in Entities.Pays
join prc in Entities.Processingss on pay.IDCalculation equals cal.IDCalculation
join mbr in Entities.Members on pay.IDMember equals mbr.IDMember
where pay.IDMember == IDMember
orderby prc.DateFrom descending
select new StructuredResult()
{
Pay = pay,
Processing = prc,
Member = mbr,
PayDetails = (from pd in Entities.PayDetails
where pd.ID == pay.IDMember
select pd).ToList())
}).ToList();

最新更新