我在我的 asp.net 站点中实现了全文搜索,在搜索一个表时可以使用。但是,我希望用户能够同时搜索两个完全不同的表。我正在尝试使用以下代码:
public List<Article> Search(List<string> keywords)
{
StringBuilder sqlBuilder = new StringBuilder();
sqlBuilder.Append("select [aName],[aDesc] from [Table1] union select [bName],[bDesc] from [Table2] where");
foreach (string item in keywords)
{
sqlBuilder.AppendFormat("([bName] like '%{0}%' or [bDesc] like '%{0}%') and ", item);
}
//foreach (string item in keywords)
//{
//sqlBuilder.AppendFormat("([aName] like '%{0}%' or [aDesc] like '%{0}%') and ", item);
//}
string sql = sqlBuilder.ToString(0, sqlBuilder.Length - 4);
return QueryList(sql);
}
此代码始终显示我的第一个表中的所有记录,并且只对第二个表执行搜索。现在这显然是因为我在 sql 语句中的第一个表没有“位置”。我不知道如何使用不同的“foreach”循环为每个表实现“where”。有什么建议么?