【发布时间】:2019-02-27 14:29:42
【问题描述】:
我们在 mm-yyyy 中有 Date 作为字符串。在 Db 中,日期字段存储为 varchar。我们需要通过 linq 过滤日期。
.where(m=>m.ItemId == itemId && DbFunctions.CreateDateTime
(m.INV_GRN.ExpDate.Split('-')[1].CompareTo(2019), m.INV_GRN.ExpDate.Split('-')
[1].CompareTo(2), 1, 0, 0, 0.0) >= DbFunctions.CreateDateTime(2019,2,1,0,0,0.0))
我们需要通过将日期拆分为月份和年份来进行比较。我们如何提取月份和年份部分以便进行比较?
那么最好的方法是什么,我错过了什么?
【问题讨论】:
-
您是否要获取具有匹配 ID 且日期大于或等于(在本例中)2019 年 2 月 1 日的每个项目?我对您使用
CompareTo函数的结果被传递到日期创建函数感到困惑。 CompareTo 的值不会返回年份部分或年份的数学差异,它只是根据排序顺序显示您的字符串是在比较字符串之前还是之后。 -
如果您只想比较两者,可以从
DateTime.Month获取月份,从DateTime.Year获取年份。
标签: c# .net visual-studio linq datetime