没有 "else" 的简短 "if" 语句

Short "if" statement without "else"

我有一个 class:

public class DriverShortInfoElement
{
    ......
    public DateTime? VistracksDateAdded { get; set; }
}

我想用 DbContext 中的数据填充它。我只想填充 VistracksDateAdded 只有某些条件为真,否则保留为 null:

我这样试:

var list = (from i in _db.Drivers
            select new DriverShortInfoElement()
            {
                .....
                VistracksDateAdded = (i.ProblemSyncToVistracksDriver != null) ? i.ProblemSyncToVistracksDriver.DateAdded : null
            }).ToList();

但是编译错误。这么简单的事情怎么做到的?

我猜DateAdded是一个DateTime。如果您使用条件运算符,则必须将 null 转换为 DateTime? 或使用 new Nullable<DateTime>(),因为 nullDateTime 之间不可能进行隐式转换:

VistracksDateAdded = i.ProblemSyncToVistracksDriver != null
    ? i.ProblemSyncToVistracksDriver.DateAdded 
    : new Nullable<DateTime>()

还有一个运算符:Null conditional operator

VistracksDateAdded = i.ProblemSyncToVistracksDriver?.DateAdded
var query =
    from driver in _db.Drivers
    select new DriverShortInfoElement
    {
        VistracksDateAdded = driver.ProblemSyncToVistracksDriver != null
            ? driver.ProblemSyncToVistracksDriver.DateAdded
            : default(DateTime?)
    };