Условие с нулевым значением в С# 6

У меня есть следующая строка кода:

Project = x.Project == null ? null : new Model { ... }

Есть ли способ в С# 6 сделать код короче?

Я смотрел на несколько? примеры, но для этого случая я не могу найти более короткое решение...

Ответ 1

As-ваш код как можно короче. Однако, если класс Project основан на методе public Model ToModel(...) { }, который вы могли бы сделать

Project = x.Project?.ToModel(...);

UPDATE: как только что упомянутый JonSkeet, вы также можете сделать .ToModel( метод расширения.

public static class ExtensionMethods
{
    public static Model ToModel(this Project p, ...)
    {
        return new Model { ... };
    }
}

Синтаксис по-прежнему будет

Project = x.Project?.ToModel(...);

Ответ 2

Нет, это так коротко, как вы можете это сделать.

Однако на основе этого кода вы должны иметь условие if выше, чтобы проверить значение x

if(x != null)
    Project = x.Project == null ? null : new Model { ... }
else
    Project = null;

Вы можете изменить это на:

Project = x?.Project == null ? null : new Model { ... }

Ответ 3

Не короче, но альтернативное решение с использованием Linq:

Model m = new Project[] { x.Project }
       .Where(p => p != null)
       .Select(p => new Model { ... })
       .FirstOrDefault();