如何将空白文本框与LINQ where子句中的日期进行比较? [英] How to compare blank textbox with date in LINQ where clause ?

查看:119
本文介绍了如何将空白文本框与LINQ where子句中的日期进行比较?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

以下是我的LINQ查询。从数据库中检索一些记录。我已经与文本框进行了日期比较。当我在这些文本框中输入日期时,记录将会重新执行,但是当我保留日期时,文本框会清空其未反复的记录并引发异常字符串未被识别为有效的日期时间



当我将文本框保留为日期空白时,我想要检索所有记录。当我提出日期时我想要检索那个日期范围记录。



所以请让我知道如何写这个查询。



Following is my LINQ Query. Which retrive some records from database. I have give date comparision with textboxes. When I put date in these textboxes the records will retrive but when i keep date textboxes empty its not retriving records and rise exception"String was not recognised as valid datetime"

When I keep textboxes od date blank i want to retrive all records. And When I put date i want to retrive that date range records.

So please let me know how to write query for this.

var AllRequest = (from objm in db.tbl_MemberMasters
                             join objreq in db.tbl_ProductRequests
                             on objm.MemberId equals objreq.memberId
                             where objm.IsDistrictFranchise == true && (objreq.date >= Convert.ToDateTime(txtfromDate.Text)  && objreq.date <= Convert.ToDateTime(txtToDate.Text)
                             select new { objreq.requestId, FranchiseeID = objm.MemberId, OwnerName = objm.MemberFirstName + " " + objm.MemberLastName, objm.MobileNumber, objm.City, Date = string.Format("{0:d}", objreq.date), objreq.status }).AsQueryable();





我尝试过:



var AllRequest =(来自db.tbl_MemberMasters中的objm
在db.tbl_ProductRequests加入objreq

上objm.MemberId等于objreq.memberId

,其中objm.IsDistrictFranchise ==真&安培;&安培; (objreq.date> = Convert.ToDateTime(txtfromDate.Text)及;&安培; objreq.date< = Convert.ToDateTime(txtToDate.Text)

选择新的{objreq.requestId,FranchiseeID = objm.MemberId,OWNERNAME = objm.MemberFirstName + + objm.MemberLastName,objm.MobileNumber,objm.City,日期=的String.Format( {0:d},objreq.date),objreq.status})。 AsQueryable();



What I have tried:

var AllRequest = (from objm in db.tbl_MemberMasters
join objreq in db.tbl_ProductRequests
on objm.MemberId equals objreq.memberId
where objm.IsDistrictFranchise == true && (objreq.date >= Convert.ToDateTime(txtfromDate.Text) && objreq.date <= Convert.ToDateTime(txtToDate.Text)
select new { objreq.requestId, FranchiseeID = objm.MemberId, OwnerName = objm.MemberFirstName + " " + objm.MemberLastName, objm.MobileNumber, objm.City, Date = string.Format("{0:d}", objreq.date), objreq.status }).AsQueryable();

推荐答案

如果您的用户输入的值不是有效日期,您也会遇到此问题。您需要使用 DateTime.TryParse [ ^ ]尝试将输入的值解析为 DateTime 实例,并且仅在值有效时应用过滤器:

You'll also have this problem if your users enter a value which isn't a valid date. You need to use DateTime.TryParse[^] to try to parse the entered values as DateTime instances, and only apply the filter if the value is valid:
var requests = from objm in db.tbl_MemberMasters
               join objreq in db.tbl_ProductRequests
               on objm.MemberId equals objreq.memberId
               where objm.IsDistrictFranchise == true
               select new { objm, objreq };

DateTime fromDate;
if (DateTime.TryParse(txtFromDate.Text, out fromDate))
{
    requests = requests.Where(r => r.objreq.date >= fromDate);
}

DateTime toDate;
if (DateTime.TryParse(txtToDate.Text, out toDate))
{
    requests = requests.Where(r => r.objreq.date <= toDate);
}

var AllRequests = requests.Select(r => new 
{ 
    r.objreq.requestId, 
    FranchiseID = r.objm.MemberId, 
    OwnerName = r.objm.MemberFirstName + " " + r.objm.MemberLastName,
    r.objm.MobileNumber,
    r.objm.City,
    Date = r.objreq.date.ToString("d"),
    r.objreq.status
});


这篇关于如何将空白文本框与LINQ where子句中的日期进行比较?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆