2017-06-13 4 views
2

私は以下の列を持つC#.netでデータテーブルを用意していますので、最初にこのデータテーブルを埋め、次に検索でデータを取得しようとします。c#.netを使用してデータテーブルの行を検索する方法

void CalculateEzafkari2() 
     { 
      calEzaf = new DataTable(); 
      calEzaf.Columns.Add("IDp"); 
      calEzaf.Columns.Add("duration"); 
      calEzaf.Columns.Add("date", typeof(DateTime)); 
      calEzaf.Clear(); 
      foreach (var item in EzafArray) 
      { 
       if (item.Value.Count()%2==0) 
       { 
        for (int i = 0; i < item.Value.Count(); i = i + 2) 
        { 
         DateTime dt1 = DateTime.Parse(item.Value[i]); 
         DateTime dt2 = DateTime.Parse(item.Value[i + 1]); 
         TimeSpan tp = dt2 - dt1; 
         calEzaf.Rows.Add(item.Key, tp.ToString(), dt1); 
        } 
       } 
       else 
       { 
        for (int i = 0; i < item.Value.Count()-1; i = i + 2) 
        { 
         DateTime dt1 = DateTime.Parse(item.Value[i]); 
         DateTime dt2 = DateTime.Parse(item.Value[i + 1]); 
         TimeSpan tp = dt2 - dt1; 
         calEzaf.Rows.Add(item.Key, tp.ToString(), dt1); 
        } 
       } 
      } 
     } 

私は以下のコードを使用してデータを抽出します。データを取得できません。この関数はデータを返しません。

public string ReadEzafKariFromDataTable(string IDp, DateTime dt) 
     { 
      string[] d = dt.ToString().Split(' '); 

      IEnumerable<DataRow> selectedRows = 
       calEzaf.AsEnumerable().Where(row => (row.Field<DateTime>("date").Equals(d[0])) && row.Field<int>("IDp")==(int.Parse(IDper))); 
      foreach (DataRow row in selectedRows) 
      { 
       return row["duration"].ToString(); 
      } 
      return ""; 
     } 
+0

等号(D [0])' –

+0

を行うには、私がしたいです検索日付とIDのためにdatetimeを( '')で区切って、このようなdatetimeの最初のセクションを使用します。 '2017-02-10 12:24:23'検索には '2017-02-10'のみを使用します。 – Shayan

+0

文字列を挿入していますが、強く型付けさそれは起こるつもりはありません – swe

答えて

0

次のコードで試してみてください。あなたは、この行は、 ` ( "日付")row.Field期待されている何

IEnumerable<DataRow> selectedRows = calEzaf.AsEnumerable().Where(row => row.Field<DateTime>("date").Date == dt.Date && row.Field<int>("IDp") == int.Parse(IDper)); 
+0

私はUrコードを使用しましたが、 "指定されたキャストが有効ではありません"というエラーが発生しました – Shayan

+0

'date'列がDateTime –

+0

の型であることを確認しました。 calEzaf.Columns.Add( "date"、typeof(DateTime)); – Shayan

関連する問題