我正在尝试搜索引擎,例如stackoverflow。我需要选择包含任何选定标签的所有行。
表
RowID Question Tags
1 'who' 'C#'
2 'what' 'SQL'
3 'where' 'C#,PHP'
4 'when' 'PHP,SQL'
string[] myTags=new string{"c#","PHP'};
然后我的sql select语句就像这样
Select * from table where Tags like myTags[]
我希望得到像
这样的结果RowID Question Tags
1 'who' 'C#'
3 'where' 'C#,PHP'
4 'when' 'PHP,SQL'
当然我知道这在语法上是不正确的,这就是我在这里的原因。
答案 0 :(得分:2)
Linq版本:
myTable.Where(x=>myTags.Contains(x.Tag));
Sql版本:
Select * from table where Tag in {'c#','SQL','PHP'}
如果一个项目的标签太多,您应该更改一下您的数据库设计(添加关系表),这不是一个包含太多标签的字符串的好方法。
<强>更新强> 对于当前的DB示例,您可以使用linq:
执行此操作myTable.Where(x=>myTags.Any(y=>x.Tags.Contains(y)));
答案 1 :(得分:0)
您是否反对进行多次SQL调用?如果没有,你可以做一个for循环来为你的标签数组中的每个项目运行查询吗?