c# - Linq 查询获取两个日期之间的数据
问题描述
日期和时间保存为:1397/06/10 13:55:49
Linq查询是:
var showFamily = (from b in database.tbl_kharidnaghdi
join u in database.tbl_Customer on b.CustomerID_FK equals u.CustomerID
join c in database.tbl_User on u.UserID_FK equals c.UserID
orderby b.KharidnaghdiID descending
where u.UserID_FK == userid
&& txtFamily.Text.Contains(u.Family)
&&string.Compare(b.Date, txtDate1.Text) <= 0
&& string.Compare(b.Date, txtDate2.Text) >= 0
select new
{
u.Name,
u.Family,
u.Mobile,
u.Price,
u.CustomerID,
b.KharidnaghdiID,
b.EtebarHadiye,
b.Cashier,
b.Date,
}).ToList();
grdShowListUser.DataSourceID = null;
grdShowListUser.DataSource = showFamily;
我认为日期应该像这样与时钟分开:1397/06/10
解决方案
由于您要比较日期值,因此有必要使用来自文本框属性(即属性)的DateTime.ParseExact()
方法转换它们并使用它们之间进行比较:Text
string
CompareTo()
DateTime date1 = DateTime.ParseExact(txtDate1.Text, "yyyy/MM/dd hh:mm:ss", CultureInfo.InvariantCulture);
DateTime date2 = DateTime.ParseExact(txtDate2.Text, "yyyy/MM/dd hh:mm:ss", CultureInfo.InvariantCulture);
var showFamily = (from b in database.tbl_kharidnaghdi
join u in database.tbl_Customer on b.CustomerID_FK equals u.CustomerID
join c in database.tbl_User on u.UserID_FK equals c.UserID
orderby b.KharidnaghdiID descending
where u.UserID_FK == userid
&& txtFamily.Text.Contains(u.Family)
&& b.Date.CompareTo(date1.Date) <= 0 // date comparison here
&& b.Date.CompareTo(date2.Date) >= 0
select new
{
u.Name,
u.Family,
u.Mobile,
u.Price,
u.CustomerID,
b.KharidnaghdiID,
b.EtebarHadiye,
b.Cashier,
b.Date,
}).ToList();
请注意,如果您使用的是 LINQ to Entities,则该Date
属性可能不受支持,您可以将其使用DbFunctions.TruncateTime()
或投影到 LINQ to ObjectsToList()
或AsEnumerable()
作为替代方案。
推荐阅读
- ubuntu - sudo:没有 tty 存在,也没有在 github 操作中指定 askpass 程序
- discord.py - Discord.py 如何获取队列中的上一个曲目
- api - 如何在 HTTP 请求中传递第三方凭据?
- graphql - 如何查询 GraphQL SPQR
- nginx - 入口规则,将流量路由到入口控制器服务
- node.js - 带有 302 重定向的跨域请求不会在 IOS 上为 Chrome 和 FireFox 设置 cookie
- python - 如何在 Python 中清理和文本挖掘列表列表
- java - JOptionpane 文本字段光标不会自动显示
- node.js - 如何使用 discord.js 向 roblox 发出 POST 请求?
- javascript - 我如何解决或拒绝基于另一个承诺的承诺?