在LINQ查询上使用foreach循环进行搜索



嗨,我在我的数据库中有一个名为知识库(KB)的表中的标签记录。标签中的单词用逗号分隔。KB表中还有一个名为Title的字段。

我需要将标签字段与标题匹配,所以我已经将标签中的所有逗号替换为像string removeCommas = commas.Replace(",", " ");这样的空格。

我想我现在需要循环每条记录在KB表中找到记录?我想将它找到的匹配数量存储在一个名为建议的变量中。

问题是什么是最好的方式来实现for each循环的查询像这样?for each循环是这个任务的最佳方法吗?

一种方法是将空格分隔的字符串存储在List中。现在,对整个表使用Foreach循环,然后对每个记录使用Foreach循环来查找Title的匹配。

如果这是错误的方向,我会纠正我的答案,但是像这样的东西会完成你正在尝试的操作吗?

System.Data.DataTable KB = new System.Data.DataTable();
string[] tags = "some,foo,bar".Split(',');
System.Collections.Generic.List<string> suggestions = new System.Collections.Generic.List<string>();
for (int i = 0; i < tags.Length; i++)
{
    for (int j = 0; j < KB.Rows.Count; j++)
    {
        string row = KB.Rows[j]["Title"].ToString();
        if ((row.Contains(tags[i]))
        {
            suggestions.Add(row);
        }
    }
}

同时,尽可能避免foreach。查看THIS post来了解原因。

是Linq可以帮助您从数据库中检索数据,然后在foreach循环后替换它

代码添加

假设您正在使用EDM,并且您有一个上下文kb:

public void ReplaceCommaInTag(KbContext kb)
 {
    var tags = from t in kb.Titles
               Select t.Tags;
    foreach(Tag tag in tags)
     {
      tag = tag.Replace(","," ");
     }
    try
    {
     kb.SubmitChanges();
    }
    catch(Exception e)
    {
    //Display the error.
    }
}

希望对你有帮助

相关内容

  • 没有找到相关文章

最新更新