如何在C#中使用Enumerable获取备用元素

这是我的问题的延续: 如何在C#中使用Enumarable来反转一系列元素?

现在我只需要替代元素。 这是我使用for循环的解决方案:

 int Max = 10; int limit = 5; Dictionary MyDict = new Dictionary(); int j = 0; for (int i = 0; i = limit) MyDict.Add((i+1).ToString(), "None"); else MyDict.Add((i+1).ToString(), j.ToString()); j+=2; } 

输出就像

 { "1" "0"} { "2" "2"} { "3" "4"} { "4" "6"} { "5" "8"} { "6" "None"} { "7" "None"} { "8" "None"} { "9" "None"} { "10" "None"} 

如何使用Enumarerable或使用任何LINQ方法执行此操作。 与之前的问题相反: 如何在C#中使用Enumarable来反转一系列元素?

您可以使用标准LINQ Where扩展方法作为执行所需操作的基础。

给出IEnumerable的列表,它会像这样工作:

 var evens = list.Where((t, i) => i % 2 == 0); var odds = list.Where((t, i) => i % 2 == 1); 

希望你可以在这些基础上做你想做的事。

 int max = 10; int limit = 5; var dict = Enumerable.Range(1, max) .ToDictionary(x => x.ToString(), x => (x > limit) ? "None" : ((x - 1) * 2).ToString()); 

我认为没有标准的LINQ方法可以做到这一点。 但是您可以创建自定义IEnumerable扩展方法来执行此类操作。

http://msdn.microsoft.com/en-us/library/cc981895.aspx

替代元素是这里的示例之一。 基本上它只是采用您的示例代码并将其打包为扩展,以便您获得所需的语法。