簡體   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