2011-07-02 32 views
2

我有一個名爲Name的列的DataTable。DataTable.Select

DataTable dt = new DataTable(); 
DataColumn dc = new DataColumn(); 
dc.DataType = System.Type.GetType("System.String"); 
dc.ColumnName = "Name"; 
dt.Columns.Add(dc); 

我想只選擇有什麼在TextBox中的DataRows,但我不知道如何去做。這是我想要的。

dt.Select("string.Compare(Name.ToLower().Contains(" + textBox1.Text.ToLower() + ")"); 

有沒有辦法做到這一點與選擇/我應該甚至試圖呢?

回答

4

您可以使用LINQ到數據集來做到這一點(通過AsEnumerable):

var results = dt.AsEnumerable().Where(dr => dr.Field<string>("Name").ToLower().Contains(textBox1.Text.ToLower())); 
2

我不相信你正在使用的表達式的語法是有效的。有描述的valid syntax here。要使用dt.Select獲得contains樣式操作,可以使用LIKE運算符。你還需要區分大小寫設置爲false:

dt.CaseSensitive = false; 
dt.Select("Name LIKE '%" + textBox1.Text + "%'"); 
0

你可以使用select

dt.select("Name = '"+textbox.text.trim()+"'"); 

,如果你要選擇類似textbaox的東西,那麼你喜歡

dt.select("Name LIKE '%"+textbox.text.trim()+"%'");