2017-06-13 92 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(); –