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

时间:2012-05-09 17:59:46

标签: c# sql

我正在尝试搜索引擎,例如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'

当然我知道这在语法上是不正确的,这就是我在这里的原因。

2 个答案:

答案 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循环来为你的标签数组中的每个项目运行查询吗?