2017-06-13 59 views
2

我在c#.net中有一个数据表,下面的列所以首先我填写这个数据表,然后我尝试通过搜索从它获取数据。如何使用c#.net搜索数据表中的行.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

您预计什么这行'row.Field ( “日期”)等于(d [0])'做 –

+0

我想。搜索按日期和ID所以我分裂日期时间('')使用像这样的日期时间的第一部分'2017-02-10 12:24:23'我只想使用'2017-02-10'搜索 – Shayan

+0

你插入字符串,但期待强类型数据回来?那是不会发生的 – swe

回答

0

尝试用下面的代码:

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

亲爱的非幸运:我用乌尔代码但我encountred errro“指定的演员是无效的” – Shayan

+0

确保列'日期'是DateTime类型 –

+0

我将它定义为日期时间。 calEzaf.Columns.Add(“date”,typeof(DateTime)); – Shayan