繁体   English   中英

使用LinQ表达式从DateTime属性获取Date

[英]Using LinQ expressions to get Date from a DateTime property

在我的代码中,我有以下内容

ParameterExpression parameter = Expression.Parameter(typeof(TSource), "x");
MemberExpression property = Expression.Property(parameter, filterDataField);

到目前为止一切正常。 但是,如果filterDataField是TSource中的DateTime属性,我想获取日期部分。 例如x.Created.Date

使用LinQ表达式和linq-to-sql(EntityFramework)是否可能?

编辑代码是IQueryable扩展方法的一部分,我创建了动态的Where方法。 它使用属性名称(filterDataField),一个值和一个比较方法(所有字符串)。

这可以正常工作,但是我希望扩展对DateTime属性的支持,并且只能使用DateTime字段的Date部分,例如x.Created。 日期

由于我假设变量filterDataField命名的属性的类型为DateTime ,因此您可以使用建议的内容,调用DateTime结构的Date属性。 用生成一个表达式只是在之后添加另一个属性访问表达式:

ParameterExpression parameter = Expression.Parameter(typeof(TSource), "x");
MemberExpression property = Expression.Property(parameter, filterDataField);
MemberExpression dateOnlyProperty = Expression.Property(property, "Date");

请注意最后一行,它仅向第一个属性添加属性访问权,实际上,其结果类似于x => x.DateProperty.Date而不是x => x.DateProperty

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM