gpt4 book ai didi

c# - 集合中集合的 Linq where 子句

转载 作者:行者123 更新时间:2023-11-30 19:27:06 26 4
gpt4 key购买 nike

我有一个发票列表和一个付款时间表列表,付款时间表有一个日记帐集合。

发票 -> 付款计划 -> 付款计划日志

我想获取付款计划日记帐状态为“到期”和“逾期”的所有发票。

我无法获取 Linq 语句来深入第二层。

我正在尝试这样的事情但没有成功(状态是状态列表):

i => i.PaymentSchedules.Any(p => p.PaymentScheduleJournals.Where(ps => statuses.Contains(ps.Status)))

最佳答案

试试这个:

var invoices = Invoices.Where(
i => i.PaymentSchedules.Where(
p => p.PaymentScheduleJournals.Where(
ps => statuses.Contains(ps.Status))
.Any())
.Any());

请记住,如果找到任何匹配项目,Any() 将返回 truefalse,而不是项目本身。因此,在代码中使用 Any() 实际上不会返回任何数据。

此外,如果该查询自行运行(不确定这是否只是您问题中的表达式的一部分),则该查询将返回付款计划,而不是发票。

进一步说明:此查询查找任何具有有效状态列表中状态的 PaymenScheduleJournal 的 PaymentSchedules。请记住,对 Where() 的调用将返回实际的查询项,但对于日志,这不是我们想要的:我们需要所有具有有效日志的计划。这就是 Any() 给我们的 - 任何有日志的时间表。我们重复相同的过程以加载任何具有有效付款计划的发票,因为发票是我们实际需要的(注意没有第三次调用 Any())。

关于c# - 集合中集合的 Linq where 子句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19518627/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com