Не следует игнорировать возвращаемые значения из функций без побочных эффектов

#c# #.net

#c# #.net

Вопрос:

У меня есть этот фрагмент кода, где я выполняю проверку перед нулевой переменной, однако я получаю эту ошибку в SonarQube, я хотел бы знать, как решить.

     public int? GetCityId(string cityName, string stateName)
    {
        if (_cityData == null) throw new InvalidOperationException("You have to initialize the data first.");
       
        if(!string.IsNullOrEmpty(stateName))
        {
           _cityData.Where(x => x.StateName == stateName.ToUpper() || x.StateInitials == stateName.ToUpper());
        }
        return  _cityData.Where(x =>
            x.CityName == cityName.ToUpper() || x.CityAlias == cityName.ToUpper())
                .Select(x => x.Id)
                .FirstOrDefault();
    }
  

Это ошибка в SonarQube:
введите описание изображения здесь

Комментарии:

1. В чем смысл _cityData.Where , если результаты не используются. Это неэффективный способ достижения абсолютно ничего

Ответ №1:

Вы имели в виду применить два вызова к .Where к вашему запросу, а затем запустить его?

         var query = _cityData.Where(x =>
            x.CityName == cityName.ToUpper() || x.CityAlias == cityName.ToUpper());

        if(!string.IsNullOrEmpty(stateName))
           query = query.Where(x => x.StateName == stateName.ToUpper() || x.StateInitials == stateName.ToUpper());

        return query
                .Select(x => x.Id)
                .FirstOrDefault();