如何在忽略DateTime属性的Time部分的情况下选择Linq by Date的项目?

ste*_*776 8 .net c# linq entity-framework

我有一个带有DateTime参数的对象列表.

我想使用LINQ查询此列表并按日期返回条目,但忽略时间部分

因此,我想选择2012年10月8日任何时间发生的任何条目.

das*_*ght 8

您可以将此代码段用于内存中查询:

var theDate = new DateTime(2012, 08, 10);
var entriesOnTheDate = list.Where(item => item.DateTimeField.Date.Equals(theDate));
Run Code Online (Sandbox Code Playgroud)

对于查询SQL Server数据源,您可以使用SqlFunctions.DatePart提取日,月和年,并单独比较它们.

var entriesOnTheDate = dbContext
    .EntriesWithDateTimeField
    .Where(item => SqlFunctions.DatePart("Year", item.DateTimeField) == 2012
                && SqlFunctions.DatePart("Month", item.DateTimeField) == 8
                && SqlFunctions.DatePart("Day", item.DateTimeField) == 12);
Run Code Online (Sandbox Code Playgroud)