gpt4 book ai didi

c# - 选择语句执行 "for each"操作,然后返回自身

转载 作者:太空宇宙 更新时间:2023-11-03 20:50:19 25 4
gpt4 key购买 nike

我有一个数据管道。我想快速对数据进行一些条件转换。看起来我可以像这样建立一个枚举而不触发它直到最后:

var data = read();
if (!adminUser) data = data.Select(d => {d.ClearAdminOnlyFields(); return d;});
if (summarize) data = data.Select(d => {d.ClearVerboseFields(); return d;});
if (translate) data = data.Select(d => {d.Translate(culture); return d;});
return data;

上面的数据是几千条。我曾尝试在谷歌上搜索这种使用 select 的方式,但找不到任何使用它的好例子。似乎人们总是使用 .ToList() 进行枚举,然后在 .ForEach() 中进行转换,但像这样的多个枚举应该更慢!似乎在里面做一个带有 if 检查的大 foreach 也会更慢。

我的问题是:我认为速度更快是错误的吗?如果是这样,您能否解释哪种替代方案更快/更好以及原因。

最佳答案

不应该这样做,不是因为它不起作用,而是因为它违反了对Select 功能的普遍期望(无副作用地转换数据)。

您应该为这种逻辑使用foreach。您应该能够使用单个 foreach 执行此操作,仅枚举一次。使用 Select 执行此操作并不更快。

关于c# - 选择语句执行 "for each"操作,然后返回自身,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56085463/

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