在linq查询中获取给定todate和fromdate中的记录

时间:2015-05-21 12:34:30

标签: asp.net linq entity-framework linq-to-sql entity-framework-5

我正在关注CliientDetails表

** CliGenDate(varchar(50)Cliname(varchar)

07/26/2013 a 07/25/2013 b 2013年7月24日c 07/23/2013 d 07/22/2013 e **

假设我的日期(日期时间)是2013年7月22日,而日期(日期时间)是2013年7月24日

结果将

** CliGenDate(varchar(50)Cliname(varchar)

2013年7月24日c 07/23/2013 d 07/22/2013 e **

我想要Linq查询

我尝试过以下代码,但错误提示msg

var Result = 
    (from a in Context.CliientDetails.AsEnumerable()
     where a.cliUserName == SalesEmail 
         && DateTime.Parse(a.cliGenDate)>=todate 
         && DateTime.Parse(a.cliGenDate)>=FromDate
     select new NewClientReg_BusinessLayer.Models.viewClientDetails
     {
        cliGenDate = a.cliGenDate,
        cliAckNo = a.cliAckNo,
        cliFullName = a.cliFullName,
        cliTopic = a.cliTopic,
        cliCourse = a.cliCourse,
        cliDomain = a.cliDomain,
        cliTotalInvest = a.cliTotalInvest
    });

但它给出了以下错误消息 字符串未被识别为有效的DateTime。

1 个答案:

答案 0 :(得分:0)

尝试使用DateTime.ParseExact代替DateTime.Parse

var provider = CultureInfo.InvariantCulture;

然后

 && DateTime.ParseExact(a.clieGenDate, "dd/MM/yyyy", provider) >= todate

现在好问题是:为什么将日期存储为varchar?

您可能知道使用.AsEnumerable(),您将在应用where子句之前检索所有数据吗?

你至少可以做到

from a in Context.CliientDetails.Where(c => c.cliUserName == SalesEmal).AsEnumerable()
...