2010-07-29 58 views

回答

29

你的意思是這樣?:

dtData.Select("ID=1 AND ID2=3"); 
12

好了,這是我做這樣的事情......在我的選擇()

GridFieldDAO dao = new GridFieldDAO(); 
    //Load My DataTable 
    DataTable dt = dao.getDT(); 
    //Get My rows based off selection criteria 
    DataRow[] drs = dt.Select("(detailID = 1) AND (detailTypeID = 2)"); 
    //make a new "results" datatable via clone to keep structure 
    DataTable dt2 = dt.Clone(); 
    //Import the Rows 
    foreach (DataRow d in drs) 
    { 
     dt2.ImportRow(d); 
    } 
    //Bind to my new DataTable and it will only show rows based off selection 
    //criteria 
    myGrid.DataSource = dt2; 
    myGrid.DataBind(); 

通知我把準則的括號之間AND and

希望這會有所幫助! 邁克V

+3

行。這是不是拋出一個更好的解決辦法了' DataRow []'左右。如果你的過濾器碰巧沒有返回行,並且你需要在你的代碼深處的模式,你不會從一個空數組中獲取它! – 2012-09-20 20:32:35

+0

哪個命名空間具有GridFieldDAO?或者不可用於winforms? – PandaNL 2013-08-26 11:15:10

5

更好地利用這一點:

GridFieldDAO dao = new GridFieldDAO(); 
//Load My DataTable 
DataTable dt = dao.getDT(); 
//Get My rows based off selection criteria and copy them directly to datatable 
DataTable dt2 = dt.Select("(detailID = 1) AND (detailTypeID = 2)").CopyToDataTable(); 
+0

CopyToDataTable未定義。我錯過了什麼? – Ciupaz 2013-10-18 08:23:07

+1

這是一個擴展方法。您必須添加對System.Data.DataSetExtensions的引用http://msdn.microsoft.com/en-us/library/bb396189(v=vs.110).aspx – qlayer 2014-07-03 10:52:06

0

很好的例子和非常有益的。想補充說明一兩件事 - 如果你需要一個字符串使用類似選擇:

DataTable dt2 = dt.Select("state = 'FL' "); 
+1

錯誤:無法隱式轉換類型'System.Data。 DataRow []'到'System.Data.DataTable' – kleineg 2015-08-18 12:33:23

1
DataTable dt2 = dt.Select("ID = 1").CopyToDataTable; 

確保DT中有

1
DataTable dt2 = dt.Select("state = 'FL' ").CopyToDataTable; 
+0

你應該添加更多的細節給你答案,向其他人解釋爲什麼這是工作。 – pix 2016-10-27 17:10:22