如果Start = 0和Count = 10,那么如何使用Enumerable.Range()获取替代值
输出应该是{0,2,4,6,8}
输出应该是{0,2,4,6,8}
如果Start = 1,Count = 10则{1,3,5,7,9}
连续值可以得到
var a = Enumerable.Range(0,10).ToList();
但是如何获得替代值?
解决方法
在这之后你在BCL中并不存在,据我所知,所以你必须像这样来自己的静态类来实现所需的功能:
public static class MyEnumerable { public static IEnumerable<int> AlternateRange(int start,int count) { for (int i = start; i < start + count; i += 2) { yield return i; } } }
那么你可以像这样使用它:
foreach (int i in MyEnumerable.AlternateRange(0,10)) { //your logic here }
然后,您也可以使用此函数执行LINQ查询,因为它返回IEnumerable
所以如果你想要你可以aleo写上面这样,如果你想排除数字6
foreach (int i in MyEnumerable.AlternateRange(0,10).Where( j => j != 6)) { //your logic here }
我希望这是你以后的事情.
您不能将此作为Enumerable的扩展方法,因为它是一个静态类,扩展方法适用于类的对象,而不是类本身.这就是为什么如果你想模仿Enumerable类,你必须创建一个新的静态类来保存这个方法.