2011-07-02 28 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()+"%'");