问个linq的查询语句!该怎么解决

问个linq的查询语句!!!
表结构如下:
Create TABLE KnowledgeLabel--标签表
(
ID int AUTO_INCREMENT primary key, 
    LableName varchar(50),
    CreateUser int,
    CreateTime datetime,
    Available bit,
    TypeId int,
    Keyword text  --引用KnowledgeKeyword表id 格式如:1|4|7|11 id用|分割
);

DROP TABLE if exists KnowledgeKeyword;--关键字表
CREATE TABLE KnowledgeKeyword
(
ID int AUTO_INCREMENT primary key,
Keyword varchar(50) unique
);

标签表存放东西如:交通、电脑、
关键字表存的如:公交车、出租车、软件、硬件等

比如我拿到一个关键字组合 :公交车 和 软件,比如id是1和2,我要查询出使用这2个关键字的标签表,(任意其中包含1个即可)

------解决思路----------------------
xxx.Where(v=>v.id==1 
------解决思路----------------------
 v.id==2)
------解决思路----------------------
个人理解:首先在KnowledgeKeyword表中,查找出对应的ID列表,然后转化为数组
var q=(from e in KnowledgeKeyword
          where e.Keyword =="公交车" 
------解决思路----------------------
 e.Keyword =="软件"
         select new{
         e.ID 
         };).Tolist();
2、查找你需要的KnowledgeLabel数据
List<object> getList=new List<Object>();
foreach(string item in q)
 {
  var getData=from m in KnowledgeLabel
                      where  m.Keyword.split('
------解决思路----------------------
').contains(item)
                      select m;
  getList.add(getData);
 }

类似的思路,木有测试昂
------解决思路----------------------
where(x=>Keyword.Split('
------解决思路----------------------
').Contains(x.id));

------解决思路----------------------

where(x=>Keyword.Split('
------解决思路----------------------
').Contains(x.id));
------解决思路----------------------
你的主管的这个所谓的方法,一句话总结: 脱裤子放屁~

放着现成的 contains和any不用,要先Intersect再any ,而且还先AsEnumerable()了一下

这完全破坏了linq的延迟查询特性,不懂技术瞎指挥~~~