Рейтинг:
2
David_Wimbley
Ваша проблема именно такова, как она утверждает, и то, что вы пробовали, является вашим точным решением.
В вашем коде есть условие, которое гласит: if(codename.Any()) { return codename.FirstOrDefault(); }
но у тебя нет другого состояния.
Ваш метод должен возвращать строку независимо от того, в каком виде она находится. Если нет кодового имени вы должны вернуться string.Empty
или null
.
Экс: if(codename.Any()) { return codename.FirstOrDefault(); } else { return string.Empty; }
Затем в той части вашего кода, которая использует этот метод, вам нужно реализовать какую-то обработку ошибок, чтобы сказать var codename = MyClass.GetCodeName(1); if(string.IsNullOrEmpty(codename) { //do some sort of error here, throw an exception, do something about the error...etc }
У вас должно быть условие else или тернарный оператор в вашем методе GetCodeName. Нет никакого способа обойти это.
D-Kishore
Спасибо вам, но мы используем этот FirstOrdefault(), я думал, что это будет заботиться, если значение также будет иметь значение null.
David_Wimbley
First или default не имеет ничего общего с тем, как работает метод или доступные возвращаемые значения.
Метод должен иметь возвращаемое значение независимо от его значения. Оператор if является предотвращение какого-либо значения, возвращаемые, если кодовое имя.Any() является ложным. Если это правда, то у вас есть возвращаемое значение.
Основываясь на вашем комментарии, кажется, что вам нужно избавиться от вашего оператора if и просто вернуть FirstOrDefault, так как проверка .Any() является избыточной.
Пример: Изменение
если (кодовое имя.Какой-нибудь())
верните кодовое имя.Метода firstordefault();
Чтобы просто
верните кодовое имя.Метода firstordefault();
Это должно выполнить то, что вы, кажется, указываете, что вам нужно. Независимо от любого содержимого в списке кодовых имен, он будет возвращать first или default (в данном случае null, если список пуст).
D-Kishore
Спасибо Дэвиду, что прояснил мои разъяснения.
Richard Deeming
NB: Так как вы используете FirstOrDefault
- тебе это не нужно if
блок вообще. Не нужно ToList
вызов.
var dc = new CEWBDataContext();
return ModelTypes(machineId, dc).Select(x => x.CodeName).FirstOrDefault();