C# 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

日期和时间保存为: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;
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)@tetsuyayayamamoto数据1为:8/6/1397,而我填充txtdate1:1397/06/08===>var showFamily为空