Ответ 1
Предполагая, что вы можете группировать все null
Программы вместе, а Id
будет неотрицательным, как насчет чего-то вроде этого:
GroupBy(x => x.Programa == null ? -1 : x.Programa.Id)
У меня есть List<Item>
Каждый элемент имеет программу с идентификатором.
Если элемент еще не связан с программой, программа будет равна null.
Я хотел бы сгруппировать все элементы с помощью этого идентификатора программы
То, что я пробовал:
var listaAgrupada = client.ListarItens(null, null, null).GroupBy(x => x.Programa.Id).ToList();
Это работает, если все элементы имеют программу. Но если программа имеет значение null, она выдает исключение System.NullReferenceException:
Сообщение = "Ссылка на объект не установлена экземпляр объекта.
Я считаю, что это связано с тем, что, поскольку программа имеет значение null, я не могу получить к ней идентификатор.
Мне нужны все элементы, даже если их программа равна null (и я бы хотел, чтобы они были сгруппированы по нулевой программе), поэтому исключение их не является вариантом.
Я подумал о двух возможных решениях, но я не уверен, как сделать их:
Будет что-то вроде GroupBy(x => x.Programa == null || x.Programa.Id)
(который не работает)
Другой будет добавлять пустой программный объект, где программа имеет значение null, но я не знаю, как это сделать
Конечно, я также открыт для других решений
Заранее спасибо
Предполагая, что вы можете группировать все null
Программы вместе, а Id
будет неотрицательным, как насчет чего-то вроде этого:
GroupBy(x => x.Programa == null ? -1 : x.Programa.Id)
С новым С# 6.0 вы также можете использовать:
.GroupBy(x => x.Programa?.Id)
где ?.
- оператор с нулевым условием. Эта возможность недоступна, когда был задан вопрос.