Как вернуть ноль, когда запрос Linq возвращает пустое значение? - PullRequest
0 голосов
/ 28 августа 2018

У меня есть следующий код для получения значений из списка.

GetList().SingleOrDefault(x => x.Key == "MyKey").MyValue;

Когда в списке есть свойство Key со значением MyKey, оно работает нормально, но когда в списке нет свойства Key со значением MyKey, оно выбрасывает NullReferenceException. Как я могу вернуть нулевое значение вместо исключения.

System.NullReferenceException
  HResult=0x80004003
  Message=Object reference not set to an instance of an object.

Ответы [ 3 ]

0 голосов
/ 28 августа 2018

Вы можете использовать ниже код

var result = GetList().SingleOrDefault(x => x.Key == "MyKey");
if(result != null)
{
  //Add your logic
}
0 голосов
/ 28 августа 2018

Более безопасный способ обработки нулевого значения в LINQ.

GetList().Where(x => x.Key == "MyKey").Select(S=>S.MyValue).SingleOrDefault();
0 голосов
/ 28 августа 2018

Использовать? и? [] ноль-условные операторы. Он проверяет значение левого операнда на нулевое значение перед выполнением операции доступа к члену (?.) Или индекса (? []); возвращает ноль, если левый операнд оценивается как ноль.

GetList().SingleOrDefault(x => x.Key == "MyKey")?.MyValue;
...