C# 如何使用LINQ打印数字

C# 如何使用LINQ打印数字,c#,.net,linq,C#,.net,Linq,我正在尝试使用LINQ打印从1到100的自然数,并且没有任何循环。我编写的LINQ查询甚至根本没有编译 Console.WriteLine(from n in Enumerable.Range(1, 100).ToArray()); 请帮助我。您的LINQ查询几乎接近解决方案,只需要一些调整 Console.WriteLine(String.Join(", ", (from n in Enumerable.Range(1, 100) select n.ToString()).ToArray()

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

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

请帮助我。

您的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,而不必首先转换为list。

方法语法:

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中引入的重载。

不可能在没有任何循环的情况下遍历数组,可以对List类使用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);
    }
 }
publicstaticvoidforeach(此IEnumerable枚举,操作)
{
if(action==null)
{
ThrowHelper.ThrowArgumentNullException(argument.match除外);
}
foreach(枚举中的T项)
{
行动(项目);
}
}

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


为了纠正您的错误,LINQ中存在循环,只是它们在您的视线之外是隐藏的。

是的,您是对的,但我从开发人员的角度来看是为了避免循环。编写隐藏循环更好,因为您无法避免它们。循环有什么问题?如果你有循环,开始使用函数式语言。你的代码没有编译它的原因是因为你没有在最后选择n。然而,即使您添加了它,它也只会打印类型的名称,而这不是您想要的。ForEach是列表的一部分,而不是LINQ。String.Join方法不会编译,因为函数需要String[]@AbrahamJP.NET 4.0有一些额外的重载,包括
Join(String,IEnumerable)
Oh!我正在.NET3.5中尝试您的代码片段,谢谢您的澄清。