没有 "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>()
,因为 null
和 DateTime
之间不可能进行隐式转换:
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?)
};
我有一个 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>()
,因为 null
和 DateTime
之间不可能进行隐式转换:
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?)
};