使用字符串C#比较数据库中的查询

时间:2013-10-18 09:27:19

标签: c# string compare

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

"ABC", "CDE", "EFG"

我有这个文字:

string a = "and abc asd dsa efg"

我想填写一个标签 - 如果是真的“字符串有ABC,EFG”否则“NO MATCH”

提前致谢,
dnisko

3 个答案:

答案 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";
相关问题