2017-06-13 94 views
-1

我在我的文件中创建了'创建日期'和'关闭日期',我在json中转换它,所以我在json中有这个日期。 在我的方法中,我有两个参数,从日期到日期,我想从日期到date.so之间计算我的文件的特定列数据。我们如何编写代码来使用linq来获取它。如何在linq c中比较日期#

我想这...

public JsonResult StatusDerails(DateTime from,DateTime to) 
{ 
     string csvurl = WebConfigurationManager.AppSettings["csvfileurl"]; 
     var lines = System.IO.File.ReadAllLines(csvurl).Skip(1); 
     List<Product> prdt = new List<Product>(); 
     foreach (string line in lines) 
     { 
      Product c1 = new Product(); 
      var split = line.Split(','); 
      c1.ID = Int32.Parse(split[0]); 
      c1.Area_Path = split[1]; 
      c1.IterationPath = split[2]; 
      c1.State = split[3]; 
      c1.Reason = split[4]; 
      c1.Priority = Int32.Parse(split[5]); 
      c1.Severity = split[6]; 
      c1.Tags = split[7]; 
      c1.Title = split[8]; 
      c1.CreatedDate = split[9]; 
      c1.CreatedBy = split[10]; 
      c1.ResolvedDate = split[11]; 
      c1.ResolvedBy = split[12]; 
      c1.ClosedDate = split[13]; 
      c1.AssignedTo = split[14]; 
      prdt.Add(c1); 
     } 

     //var list = prdt.GroupBy(a=>a.AreaPath).Select(a=>new UIproduct() { 

     var productName = prdt.Select(a => a.Area_Path).Distinct(); 
     List<StatusDetail> statusdetail = new List<StatusDetail>(); 
     foreach (var Name in productName) 
     { 
      StatusDetail sd = new StatusDetail(); 
      sd.CarryOver = prdt.Where(a => a.CreatedDate >= from.Date.ToString() && a.ClosedDate <= to.Date.ToShortDateString    
     } 
     return Json(statusdetail, JsonRequestBehavior.AllowGet); 

} 
+2

作为一个建议:不要用手解析csv,有很好的库可以做到这一点。我个人喜欢kbcsv,但这只是很多选项之一。 –

回答

0

日期时间作为字符串比较不会是一个不错的选择,并且不会给你确切的结果,因此,我建议你改变的CreatedDateClosedDate类型到DateTime。并比较linq中的两个DateTime值。我认为而不是分裂json创建某些类型的对象,你可以使用json转换器。

修复您的方案:

c1.CreatedDate = DateTime.Parse(split[9]); 
c1.ClosedDate = DateTime.Parse(split[13]); 

不要忘记更改类型的类,现在其优良的使用LINQ像如下:

sd.CarryOver = prdt.Where(a => a.CreatedDate >= from.Date && a.ClosedDate <= to.Date); 
+0

while added c1.CreatedDate = DateTime.Parse(split [9]); c1.ClosedDate = DateTime.Parse(split [13]);我得到错误:不能将日期时间转换为字符串 –

+0

,而不是在方法中传递参数我手动seted日期像字符串=“06 - 06 - 2017 00:00:00”; string to = DateTime.Now.ToString(); –