您好我的数据库中有一个名为Knowledgebase(KB)的表中有一个名为Tags的记录。标签中的单词用逗号分隔。 KB表中还有一个名为Title的字段。
我需要将标记字段与标题匹配,因此我已使用string removeCommas = commas.Replace(",", " ");
之类的空格替换标记中的所有逗号。
我想我现在需要遍历KB表中的每个记录来查找记录?我想将它找到的匹配数存储在一个名为advice的变量中。
问题是为这样的查询实现每个循环的最佳方法是什么? for each循环是这项任务的最佳方法吗?
答案 0 :(得分:0)
一种方法是将空格分隔的字符串存储在List中。现在,对整个表使用Foreach循环,然后为每个记录使用foreach循环来查找Title的匹配。
答案 1 :(得分:0)
是的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.
}
}
我希望它能帮到你
答案 2 :(得分:0)
如果这是错误的方向,我会纠正我的答案,但这样的事情会完成你正在尝试的操作吗?
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帖子了解原因。