2016-09-07 27 views
0

我建立了一個包含7列和數千行的列表。 我也有一個數據表與相同的數據(是的,冗餘)。 我想要做的是獲得與昨天日期有關的所有記錄。從列表c獲取昨天的記錄#

我已經開始對數據表的一些查詢,但沒有成功。它一直空着。與列表相同。

下面是我的表/列表的所有代碼。

 DataTable dtTesting = new DataTable(); 
      List<string>[] listA = new List<string> [8]; 
      listA[0] = new List<string>(); 
      listA[1] = new List<string>(); 
      listA[2] = new List<string>(); 
      listA[3] = new List<string>(); 
      listA[4] = new List<string>(); 
      listA[5] = new List<string>(); 
      listA[6] = new List<string>(); 
      listA[7] = new List<string>(); 

      dtTesting.Columns.Add("Over2Minutes", typeof(string)); 
      dtTesting.Columns.Add("AgentName", typeof(string)); 
      dtTesting.Columns.Add("PhoneNumber", typeof(string)); 
      dtTesting.Columns.Add("DateTime", typeof(DateTime)); 
      dtTesting.Columns.Add("Direction", typeof(string)); 
      dtTesting.Columns.Add("CallTo", typeof(string)); 
      dtTesting.Columns.Add("ManagerName", typeof(string)); 
      dtTesting.Columns.Add("Duration", typeof(string)); 

      // List<string> listE = new List<string>(); 
      //List<string> listF = new List<string>(); 

      while (!reader.EndOfStream) 
      { 
       var line = reader.ReadLine(); 
       var values = line.Split(','); 

       DataRow data = dtTesting.NewRow(); 
       data["Over2Minutes"] = values[0]; 
       data["AgentName"] = values[1]; 
       data["PhoneNumber"] = values[2]; 
       data["DateTime"] = values[3]; 
       data["Direction"] = values[4]; 
       data["CallTo"] = values[5]; 
       data["ManagerName"] = values[6]; 
       data["Duration"] = values[7]; 

       listA[0].Add(values[0]); 
       listA[1].Add(values[1]); 
       listA[2].Add(values[2]); 
       listA[3].Add(values[3]); 
       listA[4].Add(values[4]); 
       listA[5].Add(values[5]); 
       listA[6].Add(values[6]); 
       listA[7].Add(values[7]); 


      } 
      //start of filters 

      DataTable filtered = new DataTable(); 
      DateTime yesterday = DateTime.Today.AddDays(-1); 
      DateTime today = DateTime.Today.AddDays(1); 

      //List<string> listBD = new List<string>(); 
      // listBD.AddRange(listB); 
     // listBD.AddRange(listD); 
      // 


      if (cbDayList.SelectedIndex == 0) 
      { 
       try 
       { 
        var FilteredData = 

       } 
       catch 
       { 
        MessageBox.Show("No Data To Show"); 
       } 
      } 
+2

大部分代碼是不相關的。只需描述你的表結構,而不是粘貼構建和填充它的代碼。 –

+1

請提供最少的可驗證的可運行代碼。 –

+0

另外,您能否提供您使用過的任何過濾代碼?就目前而言,我們沒有任何信息表明您嘗試了哪些查詢。 –

回答

1

如果要根據特定數據篩選DataTable行,請使用DataTable的Select方法。但是,作爲Select方法的FilterExpression的一個字符串,您不得不將DateTime變量轉換爲字符串。這就是問題出現的地方。

因爲日期時間的情況下,FilterExpression要求根據InvariantCulture的格式表示的日期不能使用日期時間的默認轉換爲字符串。 "M/d/yyyy"

var FilteredData = dtSettings.Select("DateTime >= #" + 
             yesterday.ToString("M/d/yyyy") + 
             "# AND date <= #" + 
             today.ToString("M/d/yyyy") + "#"); 

順便說一句,儘管不大可能此查詢也得到半夜恰好存儲的記錄。也許你需要< today.ToString("M/d/yyyy")

另一種方式來達到你的目標是通過IEnumerable的擴展凡(LINQ命名空間)

var FilteredData = dtSettings.AsEnumerable() 
       .Where(x => x.Field<DateTime>("DateTime") >= yesterday && 
          x.Field<DateTime>("DateTime") < today);