-2

我正在用 C# 编写一个带有访问数据库的程序。我想检查数据库中的字符串是否在字符串中。我有一个名为关键字的表,我有一个字符串,其中包含一些文本。所以,我想一一检查数据库中的任何字符串是否在文本中。假设我的数据库中有这个:

"ABC", "CDE", "EFG"

我有这段文字:

string a = "and abc asd dsa efg"

我想填写一个标签 - 如果为真“字符串有 ABC,EFG”,否则“不匹配”

提前致谢,
dnisko

4

3 回答 3

1

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

 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 !";
于 2013-10-18T09:40:51.417 回答
0

在数据库端将更容易实现。对于 SQL Server,它会像

@lookup 作为你的参数

SELECT k.Word FROM Keywords k
WHERE @lookup like '%' + k.Work + '%'

这将返回您在作为参数传递给此查询字符串(存储过程)的字符串中找到的关键字集合

于 2013-10-18T09:37:50.003 回答
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";
于 2013-10-18T09:53:52.730 回答