2013-05-23 4 views
-3

Я хотел бы реорганизовать следующие 2 строки кода:короткая версия для инициализации переменной

var myDbObject = service.GetObj(id); 
name = myDbObject != null ? myDbObject.Name : "No name"; 

Как можно избежать с помощью ДОПОЛНИТЕЛЬНОЕ переменной «myDbObject»?

Могу ли я сделать это только с одной строкой кода?

Есть ли способ LINQ или что-то еще, чтобы это сделать?

Решения, которые я не ищу:

  • с помощью службы, которая возвращает имя, а не полный объект;
  • вызов службы более одного раза.
+0

Нулевой тройной ('??')? –

+0

@ColeJohnson null trernary назначит myDbObject. Сухой должен назначить его myDbObject.Name – cheedep

+0

@ColeJohnson вы говорите мне использовать service.GetObj (id) .Name ?? «Нет имени» >>, который не будет работать каждый раз, когда объект имеет значение null. У меня будет исключение, когда я получаю доступ к имени свойства null. – Dryadwoods

ответ

5
var name= service.GetObj(id)==null? "No name": service.GetObj(id).Name; 
+0

Нет, это не решение, так как вы звоните в службу 2 раза, и я не хочу этого делать. – Dryadwoods

+4

@ Dryadwoods - ну это новое ограничение, которое вы только что представили, что не было упомянуто в вопросе, поэтому я отправлю +1 этот ответ. Обычно лучше всего четко понимать все ограничения, которые вы хотите применить. –

+0

@ Dryadwoods, возможно невозможно. Подождите ответа другого. – David

Смежные вопросы