gpt4 book ai didi

c# - C#/LINQ 中的嵌套 .SelectMany 语句

转载 作者:行者123 更新时间:2023-12-03 22:56:20 25 4
gpt4 key购买 nike

我有下面的代码,它工作得很好:

return from fa in [...]
where fa.Flows.Any()
from f in fa.Flows
select new Flow(f.Id, f.DealingDate, f.NetCashUsd, fa.Account);

如您所见,我需要在第二个选择中更深层次的帐户。

但是我需要改用“.Selects”,而这(我认为是等效的)不起作用:

return [...]
.Where(fa => fa.Flows.Any())
.SelectMany(fa => fa.Flows)
.Select(f => new Flow(f.Id, f.DealingDate, f.NetCashUsd, fa.Account));

这里的问题很明显,第二个 .Select 不再“知道”fa 的东西,所以无法访问 Account。

(您现在可能已经知道,一个“fa”有一个帐户和多个流,我想将它们变成“流”,它们也都分配有帐户。)

如何仅使用“.”来解决这个问题?声明?我也研究了不同的 GroupBys,但也无法使它们工作。

谢谢!

最佳答案

overload SelectMany 使用一个额外的参数(结果选择器),您可以在其中定义返回的对象。在此结果选择器中,您可以访问源项和子项:

[....]
.SelectMany(fa => fa.Flows, (fa,f)=> new Flow(f.Id, f.DealingDate, f.NetCashUsd, fa.Account));

关于c# - C#/LINQ 中的嵌套 .SelectMany 语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43979355/

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