#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();