Как распечатать нулевые значения, если они есть в словаре, используя LINQ - PullRequest
1 голос
/ 14 июля 2020

У меня есть словарь со следующими ключами и значениями. Я пытаюсь распечатать словарь, но ничего не печатается там, где есть нулевое значение. Как мне напечатать «ноль» в выводе?

Dictionary<string, object> dic1 = new Dictionary<string, object>();
            dic1.Add("id", 1);
            dic1.Add("name", "john");
            dic1.Add("grade", null);

            Console.WriteLine(string.Join(Environment.NewLine, dic1.Select(a => $"{a.Key}: {a.Value}")));

Вот результат, который я получаю:

id: 1
name: john
grade:

Ответы [ 3 ]

5 голосов
/ 14 июля 2020

В этой ситуации вы можете использовать оператор объединения с нулем (??), который возвращает значение своего левого операнда, если он не null, в противном случае он оценивает правый -ручный операнд и возвращает его результат. Таким образом, нам нужно только добавить "null" в правую часть:

Console.WriteLine(string.Join(Environment.NewLine, 
    dic1.Select(a => $"{a.Key}: {a.Value ?? "null"}")));

Output

id: 1
name: john
grade: null
2 голосов
/ 14 июля 2020

Дайте ему кружиться.

Console.WriteLine(string.Join(Environment.NewLine, dic1.Select(a => $"{a.Key}: {a.Value ?? "null"}")));
0 голосов
/ 15 июля 2020

Вы можете использовать тернарный условный оператор .

Если выражение слева от ? оценивается как true, вычисляется выражение слева от :. Если false, вычисляется выражение справа от :.

Console.WriteLine(string.Join(Environment.NewLine, dic1.Select(a => $"{a.Key}: {(a.Value == null ? "null" : a.Value)}")));

Вышеупомянутое несколько менее элегантно, чем уже упомянутый оператор объединения с нулем .

Console.WriteLine(string.Join(Environment.NewLine, dic1.Select(a => $"{a.Key}: {a.Value?? "null"}")));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...