gpt4 book ai didi

linq - 仅将日期的年份部分用于 WHERE 条件

转载 作者:行者123 更新时间:2023-12-02 11:22:04 24 4
gpt4 key购买 nike

在下面的 LINQ 语句中,我想选择考试日期为 2010 年的人员。考试日期存储为日期时间,因为其他应用程序中使用实际日期和时间。将考试日期与“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

编辑#1

我认为我应该在考试日期看到 .Year,但我没有。在这里看到几篇文章后,我回去发现这个有效......

.Where(x => x.exam.Value.Year == 2010)

为什么访问 .Year 需要 .Value?考试是一个可为空的日期时间。

最佳答案

您可以只使用Year属性 DateTime :

var active = from p in dc.People
where p.Exam.Year >= 2010
select new {
p.ContactID,
p.FirstName,
p.LastName
};

Why is .Value necessary to access .Year? Exam is a nullable datetime.

正是因为ExamNullable<DateTime> 。当您声明 Nullable<DateTime> 的实例时喜欢

DateTime? exam;

请注意exam不是DateTime因此您无法直接访问 DateTime 的属性。获取 DateTime 的具体实例您使用 Value属性 Nullable<DateTime> (所有 Nullable<T> 都具有此属性)以便

DateTime instance = exam.Value;

DateTime假设exam不是null 。因此你可以说

int year = instance.Year;

当然,为了简洁起见

int year = exam.Value.Year;

请注意,如果exam.HasValue,这将抛出异常是假的。

关于linq - 仅将日期的年份部分用于 WHERE 条件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4694352/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com