c# - 如何在忽略 DateTime 属性的时间部分的同时选择具有 Linq by Date 的项目?

标签 c# .net linq entity-framework

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

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

所以我想选择在 08-10-2012 的任何时间发生的任何条目。

最佳答案

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

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

要查询 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);

关于c# - 如何在忽略 DateTime 属性的时间部分的同时选择具有 Linq by Date 的项目?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11954773/

相关文章:

c# - 如何使用 Linq2Sql C# 表达式使用复杂表达式进行连接

c# - 如何使用 LINQ 在 C# 中获取两个列表的差异

c# - Entity Framework 中主键不递增

c# - 对 system.data.sqlite 的查询不起作用

c# - 从 PathTooLongException 中检索路径信息

c# - 检查是否在 .NET 中连接了第二台显示器(双显示器设置,带有坞站的笔记本电脑)

c# - 避免 LINQ to SQL 中的 2100 个参数限制

c# - 如何使用 Asp.Net WebAPI 进行路由?

c# - 行号不正确的堆栈跟踪

c# - 无法将类型为 'System.Linq.Expressions.UnaryExpression' 的对象转换为类型 'System.Linq.Expressions.MemberExpression'