【问题标题】:Get value from nested collection (LINQ)从嵌套集合中获取值 (LINQ)
【发布时间】:2021-08-20 07:11:25
【问题描述】:

我有Include 和几个ThenInclude 的LINQ 表达式

这里是代码

var test2 =  Loanapplications.Include(x=> x.LoanApplicationPositions)
.ThenInclude(x => x.PositionPlayterinvoices)
.ThenInclude(x=> x.PlayterInvoiceLoanpaymentagreements)
.Include(x => x.RecruitmentAgencyClient.Client)
.Select(x => new
{
    LoanId = x.LoanApplicationPositions.Select(x=> x.PositionPlayterinvoices),

我需要得到.ThenInclude(x=> x.PlayterInvoiceLoanpaymentagreements)下的LoanId

我怎样才能得到这个?

【问题讨论】:

  • 这将有助于显示课程以及您所追求的整个最终结果。

标签: c# .net linq .net-core


【解决方案1】:

我会假设你的模型看起来像这样

class LoanApplication{
public List<LoanApplicationPosition> LoanApplicationPositions{get;set;}
}

class LoanApplicationPosition{
public List<PositionPlayterInvoce> PositionPlayterinvoices{get;set;}
}

class PositionPlayterInvoce{
public List<PlayterInvoiceLoanpaymentagreement> PlayterInvoiceLoanpaymentagreements{get;set;}
}

如果正确,那么您需要:

  • 从该列表中选择一个 LoanApplicationPosition
  • 从 PositionPlayterinvoices 列表中选择一个 PositionPlayterInvoce
  • 从 PlayterInvoiceLoanpaymentagreements 列表中选择一个 PlayterInvoiceLoanpaymentagreements

类似的东西

var l = x.LoanApplicationPositions.FirstOrDefault();
var t = l.PositionPlayterinvoices.FirstOrDefault();
var LoanId = t.PlayterInvoiceLoanpaymentagreements.FirstOrDefault().LoanId

【讨论】:

  • 这是一种从数据库中仅获取一个 Id 值的非常低效的方法。
  • GertArnold 你是对的,但我认为他会从数据块中获得更多的 id
  • 这就是为什么我逐渐学会了不要从假设中回答,而要等到问题明确为止。
【解决方案2】:

如果您有自定义投影,Select 在您的情况下,包含将被完全忽略。所以你必须自己写查询:

var query = 
    from la in Loanapplications
    from lap in la.LoanApplicationPositions
    from ppi in lap.PositionPlayterinvoices
    from pila in ppi.PlayterInvoiceLoanpaymentagreements
    select pila.LoadId;

【讨论】:

  • 我可以把这个查询注入test变量Select吗?
  • 我只需要选择具有 LoanApplicationId 的贷款 ID
  • 我没有看到你的模型类。更新问题。如果您需要正确的 LINQ 查询 - 发布您的模型。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-11-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-07-03
相关资源
最近更新 更多