Как устранить ошибку ссылки на объект в лямбда-выражении linq в c#? - PullRequest
0 голосов
/ 14 января 2020

Я работаю над приложением WPF. В котором я пытаюсь получить записи из списка в соответствии с необходимым условием. Но когда не найдено ни одной записи, это дает мне ссылку на объект, не найденную.

var recordList = _outputVariables.ToList().Where(X => X.symbolName == _symbolName).ToList();
if (recordList != null)
{
       //more coding...
}

, как показано в коде, когда _outputVariables не имеет никакого совпадения записи согласно _symbolName, тогда это дает ошибку Object reference not set to an instance of an object.' и X was null.. Так как я могу справиться с этой проблемой? пожалуйста, помогите.

Ответы [ 4 ]

3 голосов
/ 14 января 2020

Используйте нулевой условный оператор, который был введен в C # 6 (и не вызывайте ToList() более одного раза):

var recordList = _outputVariables?.Where(X => X?.symbolName == _symbolName).ToList();
if (recordList != null)
{
    //more coding...
}
0 голосов
/ 14 января 2020

Вы можете попробовать это

if(_outputVariables!=null)
{
var recordList = _outputVariables.Where(X => X.symbolName ==_symbolName).ToList();
}
if (recordList != null)
{
       //more coding...
}
0 голосов
/ 14 января 2020

var recordList = _outputVariables.ToList().Where(X => X.symbolName == _symbolName).ToList();

Вы в настоящее время l oop до _outputVariables, но если это null, это выдаст ошибку, потому что null не имеет .ToList(). Таким образом, вы должны добавить ? после вашего _outputVariables, чтобы он возвращал null вместо исключения, когда он нулевой.

То же самое относится к X. Если X равно null и вы пытаетесь получить свойство symbolName, вы получите сообщение об ошибке, поскольку null не имеет свойства с именем symbolName. Таким образом, вы также хотите добавить ? здесь. Таким образом, он вернет null вместо исключения.

Оставив вас с: var recordList = _outputVariables?.ToList().Where(X => X?.symbolName == _symbolName).ToList();

0 голосов
/ 14 января 2020

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

 if (_outputVariables != null && _outputVariables.Count > 0)
            {
               var recordList = _outputVariables.Where(X => X != null && !string.IsNullOrEmpty(X.symbolName) && X.symbolName == _symbolName);

            }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...