2015-02-23 70 views
0

我想知道使用SQL函數(在這種情況下GETDATE())在過濾器表達式,的可能性等的一個如下所述:使用GETDATE()中的DataSet.Select過濾器表達式()方法

  DataTable dataTable = new DataTable(); 
      dataTable.Columns.Add("MyDate", typeof(DateTime)); 
      dataTable.Columns.Add("MyString", typeof(string)); 
      var row = dataTable.NewRow(); 
      row[0] = DateTime.Now.AddDays(1); 
      row[1] = "XXX"; 

      dataTable.Rows.Add(row); 

      //Evaluation 

      //Example 1 - IT WORKS 
      //var rows = dataTable.Select("([MyString] = 'XXX') And [MyDate] > #2012/03/03#"); 

      //Example 2 - IT DOESN'T WORK 
      var rows = dataTable.Select("([MyString] = 'XXX') And [MyDate] >= (GETDATE())"); 

有誰知道是否有可能? 由於某些原因,我無法更改僅評估一個字符串的原始代碼,我需要獲取當前日期並在其上添加更多2天。像DATEADD(day,2,[MyDate])

我知道,一個辦法是改變的源代碼,並創建一個字符串與日期,如例2

任何幫助表示讚賞。謝謝!

回答

0

你可以看一下這個鏈接,以檢查是否類似的東西支持: http://www.csharp-examples.net/dataview-rowfilter/

我似乎做一個快速檢查和日期功能不被支持。 我是怎麼看到這個鏈接的?我只是用Google搜索你正在使用的API,來到這個鏈接第一:

https://msdn.microsoft.com/en-us/library/system.data.datatable.select%28v=vs.110%29.aspx

點擊選擇版本一個字符串,來到

https://msdn.microsoft.com/en-us/library/det4aw50(v=vs.110).aspx

然後我開始閱讀。 我傳遞了所有這些信息,因爲我認爲瀏覽互聯網上已有的內容,瞭解要尋找什麼以及如何與編程本身一樣重要。

你可以在你的情況下做什麼當然是使用DateTime.today獲取當前日期,並創建一個使用該結果的選擇字符串。不要把DateTime.today作爲字符串放在你的select中,那也行不通。

0

你可以串連DateTime.Now到過濾器:

var filter = string.Format("[MyString] = 'XXX' And [MyDate] >= #{0:yyyy-MM-dd}#", DateTime.Now); 
var rows = dataTable.Select(filter); 

如果它需要兩天以上後,那麼你可以改變DateTime.Now,以DateTime.Now.AddDays(2).Date