C#   发布时间:2022-04-03  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了c# – 用Linq迭代大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我试图找到一种方法来从同一行中的 Linq方法访问以前的值.

我希望能够在Linq中使用这个通用表单:

var values = Enumerable.Range( 1,100 ).Select( i => i + [last result] );

但是如果没有多行lambda并且将结果存储在其他地方,我找不到这样做的方法.

所以我在Linq能做的最好的斐波纳契总和是:

List<int> calculated = new List<int>( new int[] { 1,2 });
var fibonacci = Enumerable.Range(2,10).Select(i =>
    {
        int result = calculated[i - 2] + calculated[i - 1];
        calculated.Add(result);
        return result; // and how Could I just put the result in fibonacci?
    }
);

这看起来很难看.我可以使用常规for循环在较少的代码中执行此操作.

for (int i = 2; i < 10; i++)
{
    calculated.Add(calculated[i - 2] + calculated[i - 1]);
}

好像我能找到一种方法来做到这一点,我可以使用Linq进行大量的线性编程并总结很多迭代公式.

解决方法

如果您正在寻找一种创建Fibonacci序列生成器的方法,那么最好编写自己的生成函数,而不是使用Linq扩展方法.像这样的东西:

public static IEnumerable<int> Fibonacci()
{
    int a = 1;
    int b = 0;
    int last;

    for (;;) {
        yield return a;

        last = a;
        a += b;
        b = last;
    }
}

然后你可以将Linq方法应用于这个枚举来实现你想要的结果(尝试迭代Fibonacci().例如Take(20)).

Linq扩展方法不是每个编程问题的解决方案,我只能想象纯LINQ Fibonacci序列生成器看起来多么可怕.

大佬总结

以上是大佬教程为你收集整理的c# – 用Linq迭代全部内容,希望文章能够帮你解决c# – 用Linq迭代所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。
标签: