【发布时间】:2015-07-15 13:57:32
【问题描述】:
我想查询一个可以为空的 DateTime 的实体,例如,选择所有 2005 年建造的汽车:
public class Car() {
public int Id {get; set;}
public DateTime? DateBuilt {get; set;}
...
}
我的 Linq 表达式通常看起来像这样:
int carsIn2005 = context.Cars.Count(x => x.DateBuilt.Year == "2005");
但我不能使用 .Year,因为 Date 可以为空。我用谷歌搜索了一下,发现了一些关于合并操作符的东西,但不能从中做出有用的东西。如果 Linq 了解以下内容,那就太酷了:
int carsIn2005 = context.Cars.Count(x => x.DateBuilt.HasValue && x.DateBuilt.Year == "2005");
如果 DateBuilt != null 那么我应该能够将其视为 DateTime。
【问题讨论】:
-
x.DateBuilt != null && x.DateBuilt.Year == 2005怎么样? -
@DavidG:嗯,
x.DateBuilt != null && x.DateBuilt.Value.Year == 2005 -
请注意,即使
DateBuilt不可为空,您也无法将int与string进行比较... -
@JonSkeet 永远领先一步 :)
-
或在 C# 6 中:
x.DateBuilt?.Year == 2005