2017-06-13 3 views
-1

私はファイルを「作成日時」と「終了日」にしていますので、jsonで変換していますので、jsonでその日付があります。 私の方法で私は日付と日付のような2つのパラメータを持って、私は日付とdate.soの間に私のファイルの特定の列データをカウントしたいどのように私たちはlinqを使用してそれをフェッチするコードを書くことができます。linqの日付を比較する方法C#

私は、文字列としてのDateTimeの比較は良い選択肢ではありません、それは文句を言わないあなたに正確な結果を与える、だから私はあなたがCreatedDateClosedDateの種類を変更することをお勧めします...

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が好きですが、それは多くのオプションの1つに過ぎません。 –

答えて

0

これを試してみましたDateTimeに変換します。 linqの2つの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

c1.CreatedDate = DateTime.Parse(split [9]);を追加しています。 c1.ClosedDate = DateTime.Parse(split [13]);エラーが発生しています:文字列にdatetimeを変換できませんメソッドのパラメータを渡す代わりに –

+0

私は文字列のように手動で設定されています= "06 - 06 - 2017 00:00:00"; string to = DateTime.Now.ToString(); –

関連する問題