2014-03-19 16 views
-1

我正在使用DotNet版本3.5的WindowsFormsApplication。C#使用Linq,Dot net Version 3.x查找数据表中的文本

我正在寻找一种快速的方式在Datatable的行中查找字符串。我有一个字符串str1我想搜索数据表dt是否包含str1中的文本。

我有一个数据表,dt这样。这只是一个示例,我在数据表中有近500个字符串。

string str1 = "Carrot"; 

DataTable dt = new DataTable(); 
dt.Columns.Add("Text"); 

dt.Rows.Add("Cat"); 

dt.Rows.Add("Dog"); 

dt.Rows.Add("Parrot"); 

dt.Rows.Add("Carrot"); 

dt.Rows.Add("Tomato"); 

dt.Rows.Add("Rabbit"); 

dt.Rows.Add("Pigon"); 

我在找这样的东西;

if dt.Column("Text") contains str1 then 
MessageBox.Show("The data table contains the string in str1"); 

回答

0
if(dt.AsEnumerable().Any(x => x.Field<string>("Text") == str1)) 
{ 
    ... 
} 

如果您不能使用LINQ然后使用一个循环:

foreach (DataRow row in dt.Rows) 
{ 
    if (row["Text"] == str1) 
    { 
      MessageBox.Show("The data table contains the string in str1"); 
      break; 
    } 
} 
+0

因为我用点net版本3.5,我不能用 'AsEnumerable'。 – Kamran

+1

@Kami * *不会阻止你使用'AsEnumerable()'。 – Servy

+0

@Servy是的你是对的,我刚刚搜索,发现我没有添加库“System.Data.DataSetExtensions”。我加了它,现在它的工作很完美。谢谢! – Kamran