我希望选择包含数组中任何元素的所有行
本文关键字:元素 任何 选择 包含 数组 我希望 | 更新日期: 2023-09-27 18:33:44
我正在尝试做一个搜索引擎,类似于这里的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 * from table where Tags like myTags[]
我希望有这样的结果
RowID Question Tags
1 'who' 'C#'
3 'where' 'C#,PHP'
4 'when' 'PHP,SQL'
当然,我知道这在语法上是不正确的,这就是我在这里的原因。
Linq 版本:
myTable.Where(x=>myTags.Contains(x.Tag));
SQL版本:
Select * from table where Tag in {'c#','SQL','PHP'}
如果一个项目可以有太多标签,你应该稍微改变一下你的数据库设计(添加关系表),拥有一个包含太多标签的字符串不是一个好方法。
更新:对于当前的数据库示例,可以使用 linq 执行此操作:
myTable.Where(x=>myTags.Any(y=>x.Tags.Contains(y)));
你反对进行多个SQL调用吗?如果没有,您可以执行 for 循环来为标签数组中的每个项目运行查询?