我希望选择包含数组中任何元素的所有行

本文关键字:元素 任何 选择 包含 数组 我希望 | 更新日期: 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 循环来为标签数组中的每个项目运行查询?