2013-10-18 69 views
-2

我正在C#與訪問數據庫中的程序。我想檢查數據庫中的字符串是否在字符串中。 我有一個名爲關鍵字的表,我有一個字符串誰有一些文字。所以,我想檢查一下數據庫中的任何字符串是否在文本中。 比方說,我有這個在我的數據庫:比較來自數據庫的查詢與字符串C#

"ABC", "CDE", "EFG" 

,我有這樣的文字:

string a = "and abc asd dsa efg" 

我要填寫一個標籤 - 如果是真正的「字符串有ABC,EFG」其他「不匹配」

由於提前,
dnisko

+0

您正在使用什麼RDBMS? –

回答

1

首先將表列值填充到字符串List中。

SqlConnection cnn = new SqlConnection(/*Database connection credentails*/); 

SqlDataAdapter da = new SqlDataAdapter("select columnName from table", con); 
DataSet ds = new DataSet(); 
da.Fill(ds); 

List<string> keyValues= new List<string>(); 
foreach(DataRow row in ds.Tables[0].Rows) 
{ 
    keyValues.Add(row["columnName"].ToString()); 
} 

然後逐個搜索文本中的字符串。

string a = "and abc asd dsa efg"; 
string matchedKeys=string.Empty; 
bool matchFound = false; 


foreach(string key in keyValues) 
{ 
    if(a.Contains(key)) 
    { 
     matchFound=true; 
     matchedKeys + = key + ","; 
    } 
} 

if(matchFound) 
    lbl.Text = "The string has " + matchedKeys; 

else 
    lblText = " NO Match Found !"; 
+0

非常感謝!還有一件事要問。如何使它不區分大小寫? – dnisko

0

會更容易實現對數據庫的一面。對於SQL Server就會像

@lookup作爲參數

​​

這將返回你的關鍵字的集合你作爲參數傳遞給這個查詢字符串(存儲過程)通過在字符串中被發現,

0

嘗試使用此

 // list from DB 
     var list = new List<string> { "ABC", "CDE", "EFG" }; 
     var selectedResult = new List<string>(); 
     var a = "and abc asd dsa efg"; 
     list.ForEach(x => 
      { 
       var result = a.ToUpperInvariant().Contains(x.ToUpperInvariant()); 
       if (result) 
       { 
        selectedResult.Add(x); 
       } 
      }); 


     var joined = selectedResult.Count > 0 ? string.Join(",", selectedResult) : "No Match";