如何在 IQueryable<> 中选择日期间隔?
我有一个从实体模型收集的 IQueryable
。我想用它来获取一组新的 IQueryable
但仅限于网页上 2 个文本框的特定日期间隔内。
Journey
具有 Journey.DateFrom
和 Journey.DateTo
,它们是字符串(“YYYYMMDD”)。
我以为我会做这样的事情:
(journeys is IQueryable
)
if (tb_DateFrom.Text != ""){
journeys = from j in journeys
where Convert.ToInt32(j.DateTo) >= Convert.ToInt32(tb_DateFrom.Text)
select j;
}
if (tb_DateTo.Text != ""){
journeys = from j in journeys
where Convert.ToInt32(j.DateFrom) <= Convert.ToInt32(tb_DateTo.Text)
select j;
}
但我收到错误消息说 linq 不知道如何做 Convert.ToInt32
,它也不知道知道如何进行 int.parse 或 datetime.parse。有效的方法是使用 IEnumerable
而不是 IQueryable
但速度太慢以至于网站崩溃,因为我比较的数据非常大。
我该如何解决这个问题,这是将数据库中的格式转换为日期时间的唯一答案吗?
请帮忙:)
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
我会尝试这个:
I'd try this:
为什么不将文本框值转换为日期时间,然后比较 where 子句中的日期,而不是转换为 int
Why don't you convert textbox values to datetime and then compare the dates in the where clause, instead of converting to int
由于字符串格式的排序顺序与它们所代表的日期相同,我不明白为什么您必须转换它们的数据格式。只是做(未经测试):
更新,在Joakim的评论之后,仍然只使用字符串的排序顺序:
(Det borde väl fungera,Joakim?)
哎呀,我错过了接受的答案,但我仍然会留下我的第一个编辑.. 。
As the string format you have sorts in the same order as the dates they represent, I don't see why you have to convert their data format at all. Just do (untested):
Update, after Joakim's comment, still just using the sort order of the strings:
(Det borde väl fungera, Joakim?)
Oops, I missed the accepted answer, but I'll still leave my first edit...