如何使用 LINQ 打印数字



我正在尝试使用 LINQ 打印从 1 到 100 的自然数,并且没有任何循环。我编写的 LINQ 查询甚至根本不编译。

Console.WriteLine(from n in Enumerable.Range(1, 100).ToArray());

请帮助我。

方法语法:

Enumerable.Range(1, 100).ToList().ForEach(Console.WriteLine);

查询语法:

(from n in Enumerable.Range(1, 100) select n)
    .ToList().ForEach(Console.WriteLine);

或者,如果您想要一个逗号分隔的列表:

Console.WriteLine(string.Join(",", Enumerable.Range(1, 100)));

这个使用.NET 4.0中引入的String.Join(String,IEnumerable)重载。

您的 LINQ 查询几乎接近解决方案,只需要进行一些调整。

Console.WriteLine(String.Join(", ", (from n in Enumerable.Range(1, 100) select n.ToString()).ToArray()));

希望这有帮助

试试这个:

Enumerable.Range(1, 100).ToList().ForEach(x => Console.WriteLine(x));

如果您希望获得更好的性能,还可以将 ForEach 作为扩展方法添加到 IEnumerable,而不必先转换为列表。

LINQ 是查询语言。它只能过滤和转换数据。这就是 LINQ 的目的。当然会有一些 ForEach 扩展,但这不是 LINQ 本身的一部分。

为了纠正您,LINQ 中有一些循环,只是它们隐藏在您的视线之外。

没有任何循环的情况下遍历数组是不可能的,您可以使用 Listclass 的 ForEach 扩展方法。

Enumerable.Range(1,100).ToList().ForEach( i => Console.WriteLine(i));

我不知道你为什么要这样做,但循环可能不是你写的,但最终会在代码的某些部分呈现。

编辑:提出的任何解决方案都会有一些甚至两个循环,如果您只想遍历所有元素,您应该创建一个扩展,在其中隐藏每个元素

 public static void ForEach<T>(this IEnumerable<T> enumeration, Action<T> action)
 {
     if (action == null)
    {
        ThrowHelper.ThrowArgumentNullException(ExceptionArgument.match);
    }
    foreach(T item in enumeration)
    {
        action(item);
    }
 }

相关内容

  • 没有找到相关文章

最新更新