嗨,我在我的数据库中有一个名为知识库(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.
}
}
希望对你有帮助