Den*_*ail 12 linq entity-framework entity-framework-4
在下面的LINQ语句中,我想选择2010年考试日期的人.考试日期存储为日期时间,因为实际日期和时间用于其他应用程序.将exzam日期与"2010"进行比较的最优雅,最简单,最好的方法是什么?或者,我应该使用> =,将考试日期与2010年1月1日进行比较?
var active = dc.People.Where(x => x.exam >= 2010)
.Select(x => new {x.ContactID, x.FirstName, x.LastName})
);
x.MostRecent == DateTime.Parse("1/1/2010").Year
Run Code Online (Sandbox Code Playgroud)
编辑#1
我以为我应该在考试日期看到一个.但是我没有.在这里看到几个帖子之后我回去发现这个作品......
.Where(x => x.exam.Value.Year == 2010)
Run Code Online (Sandbox Code Playgroud)
为什么.Value必须访问.是吗?考试是可以自由的日期时间.
jas*_*son 22
您可以在以下位置使用该Year
属性DateTime
:
var active = from p in dc.People
where p.Exam.Year >= 2010
select new {
p.ContactID,
p.FirstName,
p.LastName
};
Run Code Online (Sandbox Code Playgroud)
为什么.Value必须访问.是吗?考试是可以自由的日期时间.
正是因为Exam
是Nullable<DateTime>
.当您声明一个Nullable<DateTime>
类似的实例时
DateTime? exam;
Run Code Online (Sandbox Code Playgroud)
请注意,这exam
不是一个DateTime
,因此您无法直接访问其属性DateTime
.要获得一个具体的实例,DateTime
请使用该Value
属性Nullable<DateTime>
(所有Nullable<T>
s都具有此属性)
DateTime instance = exam.Value;
Run Code Online (Sandbox Code Playgroud)
是一种DateTime
假设exam
不是null
.你可以这样说
int year = instance.Year;
Run Code Online (Sandbox Code Playgroud)
当然,为了简洁起见
int year = exam.Value.Year;
Run Code Online (Sandbox Code Playgroud)
请注意,如果exam.HasValue
为false ,则抛出此值.
归档时间: |
|
查看次数: |
25827 次 |
最近记录: |