将数据库中的查询与字符串 C# 进行比较

本文关键字:比较 字符串 数据库 查询 | 更新日期: 2023-09-27 18:35:50

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

"ABC", "CDE", "EFG"

我有这段文字:

string a = "and abc asd dsa efg"

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

提前感谢,
德尼斯科

将数据库中的查询与字符串 C# 进行比较

首先将

表列值填充到字符串 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 !";

数据库端更容易实现。对于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";