2017-05-31 46 views
-3

所以我有一个正确获取数据的查询,但只要我试图过滤linq语句与日期之间的位置,我始终得到零结果。Linq日期

 var query= Enumerable.Empty<CustomClass>().AsQueryable(); 

     query= (from auto in db.AutoInvs 
      join deal in db.Deals on new { inv = auto.INVUID, client = auto.CLIENTID, acct = auto.ACCOUNT} equals new {inv = deal.INVUID,client = deal.CLIENTID, acct = (int?) deal.ACCOUNT} 
      join dmCust in db.DMCusts on new {inv = auto.INVUID, client = auto.CLIENTID, acct = auto.ACCOUNT.ToString()} equals new {inv = dmCust.INVUID, client = dmCust.CLIENTID, acct = dmCust.ACCOUNT} 
      join act in db.Acts on new { inv = auto.INVUID, client = auto.CLIENTID, acct = auto.ACCOUNT.ToString()} equals new { inv = act.INVUID, client = act.CLIENTID, acct = act.Key } 
      where auto.DATAPROCESSEDDATE == null && auto.INVUID != "" 
      select new CustomClass() 
      { 
       AutoInv = auto, 
       Deal = deal, 
       DmCust = dmCust, 
       Act = act 
      }); 
    var filteredData = query.Where(c => c.AutoInv.DATESOLD >= dateFrom.Value && c.AutoInv.DATESOLD <= dateTo.Value).AsQueryable(); 
    Console.WriteLine(filteredData.ToList().Count); 
+0

请阅读[问]并创建[mcve]。这里只有一行代码是相关的,并且您的输入数据和日期时间值缺失。 – CodeCaster

+0

我怀疑auto.DATAPROCESSEDDATE从不为空。 DateTime对象不能为空。所以我会尝试auto.DATAPROCESSEDDATE.year <1980.默认的DateTime对象是1900。 – jdweng

回答

2

使用该精简版(和我自己的数据),它为我工作:

var query = Enumerable.Empty<Tbl1>().AsQueryable(); 

DateTime? dateFrom = new DateTime(2017, 5, 10); 
DateTime? dateTo = new DateTime(2017, 5, 20); 

query = (from auto in db.Tbl1s 
     select auto); 

var filteredData = query.Where(c => c.StartDate >= dateFrom.Value 
           && c.StartDate <= dateTo.Value).AsQueryable(); 
filteredData.Dump(); 

一个你可能有可能的问题是dateTo将是独家终点 - - 除非DATESOLD恰好是午夜,否则您将不会收到任何结束日期。