Как получить обратный ряд элементов, используя Enumarable в C #? - PullRequest
1 голос
/ 08 ноября 2010

У меня есть две целочисленные переменные, такие как

int Max = 10;
int limit = 5;

и Словарь

Dictionary<String , String> MyDict = new Dictionary<string,string>();

Мне нужно заполнить словарь элементами Max, и если индекс больше или равенв limit тогда значение должно быть нулевым.

Вот мой пример кода, который очистит мой вопрос

int j = 1;
for (int i = Max-1; i >= 0; i--)
{
    if (i >= limit)
        MyDict.Add((j++).ToString(), "None");
    else
        MyDict.Add((j++).ToString(), i.ToString());
}

, поэтому результат будет выглядеть как

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

Как это сделать, используя LINQ или LAMBDA Expression

Обратное можно сделать, используя Enumarable здесь это

MyDict  = Enumerable.Range(0, Max)
                    .ToDictionary(X => (X + 1).ToString(), X => X >= limit ? "None" : X.ToString());

Вывод этого выражения

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

Но как сделать обратное (например, вывод цикла for)?Или как мне изменить существующий LINQ?

Заранее спасибо.

1 Ответ

3 голосов
/ 08 ноября 2010
Enumerable.Range(0, Max).OrderByDescending(x => x).ToDictionary(x => (Max - x).ToString(), x => x >= limit ? "None" : x.ToString());
...