问个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));
------解决思路----------------------
你的主管的这个所谓的方法,一句话总结: 脱裤子放屁~
放着现成的 contains和any不用,要先Intersect再any ,而且还先AsEnumerable()了一下
这完全破坏了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的延迟查询特性,不懂技术瞎指挥~~~