[英]How do I write a for each lambda expression to iterate over a numeric range in C#?
我想写一些类似的东西:
(0 .. 7)。ForEach(i => SomeMethod(i))
但要么我找不到正确的语法,要么在C#中这是不可能的。 如果可以,请问正确的语法是什么?
您可以使用Enumerable.Range方法
foreach (var i in Enumerable.Range(0, 7)) SomeMethod(i);
如果您按@Richard建议添加ForEach扩展方法,只需执行以下操作:
Enumerable.Range(0, 7).ForEach(SomeMethod);
要实现您所追求的目标,您需要添加虚幻且众所周知的LINQ ForEach
语句。
public static void ForEach<T>(this IEnumerable<T> source, Action<T> action)
{
foreach(T item in source)
{
action(item);
}
}
用法:
Enumerable.Range(0, 7).ForEach(i => SomeMethod(i));
Enumerable.Range(0, 7).ForEach(i => Console.WriteLine(i.ToString());
Enumerable.Range(0, 7).ForEach(i =>
{
string oddEven = i % 2 == 0 ? "even" : "odd";
Console.WriteLine(string.Format("{0} is {1}", i, oddEven));
}
额外阅读
Enumerable.Range(0, 7).ToList().ForEach(i => whatever)
你需要ToList
,因为纯IEnumerable
没有ForEach
。 (好吧,如果你需要,可以轻松定义自己的。)
或者也许是Enumerable.Range(0, 7 + 1)
,如果你想包括7也是如此。
看看Enumerable.Range();
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.