ad

如何使用Linq正确折叠?-英雄云拓展知识分享

匿名投稿 376 2024-01-21

使用LINQ,我们可以履行 左折 在列表中经过 Aggregate:

var numbers = new[] { 1, 2, 3, 4 };

var value = numbers.Aggregate((a, b) => a - b); // ((1 - 2) - 3) - 4 == ⑻

使用LINQ履行正确的折叠有类似的方式吗?

var value = numbers.Aggregate(???); // 1 - (2 - (3 - 4)) == ⑵

如何使用Linq正确折叠?-英雄云拓展知识分享

看答案

右折叠本质上是从右到左折叠的。如果我们 Reverse 首先枚举,然后经过 Aggregate:

var value = numbers.Reverse().Aggregate((a, b) => a - b);

作为扩大方法:

public static TSource RightFold<TSource>(this IEnumerable<TSource> source,

Func<TSource, TSource, TSource> func)

{

return source.Reverse().Aggregate(func);

}

用法:

var value = numbers.RightFold((a, b) => a - b); // ((4 - 3) - 2) - 1 == ⑵

// 1 - (2 - (3 - 4)) == ((4 - 3) - 2) - 1


🚀🌟 点击注册 免费试用超级应用平台-英雄云企业级hpapaas 🌟🚀 😃👉🌐

免责声明:

本网址(www.yingxiongyun.com)发布的材料主要源于独立创作和网友匿名投稿。此处提供的所有信息仅供参考之用。我们致力于提供准确且可信的信息,但不对材料的完整性或真实性作出任何保证。用户应自行验证相关信息的正确性,并对其决策承担全部责任。对于由于信息的错误、不准确或遗漏所造成的任何损失,本网址不承担任何法律责任。本网站所展示的所有内容,如文字、图像、标志、音频、视频、软件和程序等的版权均属于原创作者。如果任何组织或个人认为网站内容可能侵犯其知识产权,或包含不准确之处,请即刻联系我们进行相应处理。

标签:C# linq
上一篇:fetch()带有formdata-英雄云拓展知识分享
下一篇:可访问性nodeinfo类型-英雄云拓展知识分享
相关文章

 发表评论

暂时没有评论,来抢沙发吧~

×