我正在用 C# 编写一个带有访问数据库的程序。我想检查数据库中的字符串是否在字符串中。我有一个名为关键字的表,我有一个字符串,其中包含一些文本。所以,我想一一检查数据库中的任何字符串是否在文本中。假设我的数据库中有这个:
"ABC", "CDE", "EFG"
我有这段文字:
string a = "and abc asd dsa efg"
我想填写一个标签 - 如果为真“字符串有 ABC,EFG”,否则“不匹配”
提前致谢,
dnisko
首先将表列值填充到字符串列表中。
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 !";
在数据库端将更容易实现。对于 SQL Server,它会像
@lookup 作为你的参数
SELECT k.Word FROM Keywords k
WHERE @lookup like '%' + k.Work + '%'
这将返回您在作为参数传递给此查询字符串(存储过程)的字符串中找到的关键字集合
尝试使用这个
// 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";