C# Linq查询以获取两个日期之间的数据
日期和时间保存为:1397/06/10 13:55:49 Linq查询是:C# Linq查询以获取两个日期之间的数据,c#,asp.net,linq,C#,Asp.net,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.U
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;
var showFamily=(来自database.tbl_kharidnaghdi中的b)
在数据库中加入u.tbl_客户在b.CustomerID_FK等于u.CustomerID
在数据库中加入c.tbl_User on u.UserID_FK等于c.UserID
医嘱人b.KharidnaghdiID
其中u.UserID\u FK==UserID
&&txtFamily.Text.Contains(u.Family)
&&string.Compare(b.Date,txtDate1.Text)=0
选择新的
{
u、 名字,
u、 家庭,
u、 流动的,
u、 价格,
u、 客户ID,
b、 哈利德纳格迪德,
b、 埃特巴哈迪耶,
b、 出纳,
b、 日期,
}).ToList();
grdShowListUser.DataSourceID=null;
grdShowListUser.DataSource=showFamily;
我认为日期应该像这样从时钟中分离出来:1397/06/10因为要比较日期值,有必要使用文本框的
Text
属性(即string
属性)中的DateTime.ParseExact()
方法转换它们,并使用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();
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=(来自database.tbl_kharidnaghdi中的b)
在数据库中加入u.tbl_客户在b.CustomerID_FK等于u.CustomerID
在数据库中加入c.tbl_User on u.UserID_FK等于c.UserID
医嘱人b.KharidnaghdiID
其中u.UserID\u FK==UserID
&&txtFamily.Text.Contains(u.Family)
&&b.Date.CompareTo(date1.Date)=0
选择新的
{
u、 名字,
u、 家庭,
u、 流动的,
u、 价格,
u、 客户ID,
b、 哈利德纳格迪德,
b、 埃特巴哈迪耶,
b、 出纳,
b、 日期,
}).ToList();
请注意,如果您使用LINQ to实体,则可能不支持
Date
属性,您可以使用ToList()
或AsEnumerable()
作为替代,将其投影到LINQ to对象。数据库中的数据为1397/06/10 13:55:49
txtdate中的数据为1397/06/10
我假设1397是年(yyyy),06是月(MM),10是日(dd)。数据库中的数据也是字符串格式
DateTime date1 = DateTime.ParseExact(txtDate1.Text, "yyyy/MM/dd", CultureInfo.InvariantCulture);
DateTime date2 = DateTime.ParseExact(txtDate2.Text, "yyyy/MM/dd", 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)
&& DateTime.ParseExact(b.Date, "yyyy/MM/dd hh:mm:ss", CultureInfo.InvariantCulture) < date1
&& DateTime.ParseExact(b.Date, "yyyy/MM/dd hh:mm:ss", CultureInfo.InvariantCulture) >= date2
select new
{
u.Name,
u.Family,
u.Mobile,
u.Price,
u.CustomerID,
b.KharidnaghdiID,
b.EtebarHadiye,
b.Cashier,
b.Date,
}).ToList();
DateTime date1=DateTime.ParseExact(txtDate1.Text,“yyyy/MM/dd”,CultureInfo.InvariantCulture);
DateTime date2=DateTime.ParseExact(txtDate2.Text,“yyyy/MM/dd”,CultureInfo.InvariantCulture);
var showFamily=(来自database.tbl_kharidnaghdi中的b)
在数据库中加入u.tbl_客户在b.CustomerID_FK等于u.CustomerID
在数据库中加入c.tbl_User on u.UserID_FK等于c.UserID
医嘱人b.KharidnaghdiID
其中u.UserID\u FK==UserID
&&txtFamily.Text.Contains(u.Family)
&&DateTime.ParseExact(b.Date,“yyyy/MM/dd hh:MM:ss”,CultureInfo.InvariantCulture)=date2
选择新的
{
u、 名字,
u、 家庭,
u、 流动的,
u、 价格,
u、 客户ID,
b、 哈利德纳格迪德,
b、 埃特巴哈迪耶,
b、 出纳,
b、 日期,
}).ToList();
注意:如果结果为空,则请更改大于、小于小于条件,并检查为什么字符串。比较。首先转换文本您需要将这两个日期视为
DateTime
实例,并使用CompareTo
将它们进行比较。没错,但我不知道怎么做it@TetsuyaYamamoto没错,但我不知道如何使用DateTime
变量,比如DateTime date1=DateTime.ParseExact(txtDate1.Text,“date\u format\u here”)
,然后您可以执行b.date.CompareTo(date1)您需要将月份大写:yyyy/MM/dd hh:MM:ss
我认为OP错过了比较。它应该是date>=date1&&date=Date2。此代码是错误”字符串未被识别为有效的日期时间“我的数据库格式的数据是1397/06/10 13:55:49,但格式填充txtdate是1397/06/10,那么您应该调整ParseExact
仅用于日期的值,如DateTime.ParseExact(txtDate1.Text,“yyyy/MM/dd”,CultureInfo.InvariantCulture)当格式字符串更改为“yyyy/dd/MM”时,代码>@tetsuyayayamamoto数据1为:8/6/1397,而我填充txtdate1:1397/06/08===>var showFamily为空