如何在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
替代元素是这里的示例之一。 基本上它只是采用您的示例代码并将其打包为扩展,以便您获得所需的语法。