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