我正在C#與訪問數據庫中的程序。我想檢查數據庫中的字符串是否在字符串中。 我有一個名爲關鍵字的表,我有一個字符串誰有一些文字。所以,我想檢查一下數據庫中的任何字符串是否在文本中。 比方說,我有這個在我的數據庫:比較來自數據庫的查詢與字符串C#
"ABC", "CDE", "EFG"
,我有這樣的文字:
string a = "and abc asd dsa efg"
我要填寫一個標籤 - 如果是真正的「字符串有ABC,EFG」其他「不匹配」
由於提前,
dnisko
我正在C#與訪問數據庫中的程序。我想檢查數據庫中的字符串是否在字符串中。 我有一個名爲關鍵字的表,我有一個字符串誰有一些文字。所以,我想檢查一下數據庫中的任何字符串是否在文本中。 比方說,我有這個在我的數據庫:比較來自數據庫的查詢與字符串C#
"ABC", "CDE", "EFG"
,我有這樣的文字:
string a = "and abc asd dsa efg"
我要填寫一個標籤 - 如果是真正的「字符串有ABC,EFG」其他「不匹配」
由於提前,
dnisko
首先將表列值填充到字符串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 !";
非常感謝!還有一件事要問。如何使它不區分大小寫? – dnisko
會更容易實現對數據庫的一面。對於SQL Server就會像
@lookup作爲參數
這將返回你的關鍵字的集合你作爲參數傳遞給這個查詢字符串(存儲過程)通過在字符串中被發現,
嘗試使用此
// 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";
您正在使用什麼RDBMS? –