我正在尝试编写关于父子关系表的MySQL查询的lambda表达式,但是我没有得到关于数据的正确输出,所以任何人都可以告诉我如何编写它。
Parent_Type(Parent Table) :-
CREATE TABLE `Parent_Type` (
`ID` INT NOT NULL AUTO_INCREMENT ,
`NAME` VARCHAR(255) NULL ,
`FLAG` decimal(1,0) DEFAULT NULL,
PRIMARY KEY (`ID`) );
Child_Type(子表): -
CREATE TABLE `Child_Type` (
`ID` INT NOT NULL AUTO_INCREMENT ,
`NAME` VARCHAR(255) NULL ,
`Parent_TYPE_ID` INT NULL,
`FLAG` decimal(1,0) DEFAULT NULL,
PRIMARY KEY (`ID`),INDEX `fk_Child_Type_1` (`PARENT_TYPE_ID` ASC),
CONSTRAINT `fk_Child_Type_1`
FOREIGN KEY (`PARENT_TYPE_ID` )
REFERENCES `parent_type` (`ID` )
ON DELETE NO ACTION
ON UPDATE NO ACTION);
虚拟数据: - ParentType-
ID Name FLag
1 A 0 2 B 0 3 C 1
ChildType: -
Id---------Name-----------------Parent_Type_Id-------Flag
1 GA 1 0 2 GB 1 1 3 GC 2 1 4 GD 2 0 5 GE 3 0
MySQL查询: -
SELECT * from parent_type p left outer join child_type c
on p.ID = c.PARENT_TYPE_ID where p.flag=0 AND c.flag=0;
所以,我需要两个表中都有flag = 0的数据。 OutputData: -
Id Parent_Type_Id Name ChildName Flag
1 1 A GA 0 4 2 B GD 0
Upper Query正在运行且输出正确。谁能告诉我这个查询将如何在lambda表达式中完成。
答案 0 :(得分:0)
Plz分享你的lamda表达.... 试试这个,可能是这个帮你。
IList parentList = parent_type.Where(x => x.FLAG == 0&&(x => x.child_type.where(t => t.FLAG == 0).Count> 0 ))ToList();
答案 1 :(得分:0)
试试这个......
var lambdaExpression = ParentType.Where(c => c.Flag == 0) .Join(ChildType.Where(uc => uc.Flag == 0),c => new {c.Name,c.ID},uc => new {uc.Name,uc.ID}, (c,uc)=> C);
如果仍然面临一些问题,请看...
答案 2 :(得分:0)
试试这个Linq,它可以帮到你
var linqQuery= from pa in parent_list where pa.Flag==0
select ch in pa.child_type_list where ch.Flag==0
select new
{
id=ch.id,
Parent_Type_Id=ch.Parent_Type_Id.ID,
Name=ch.Parent_Type_Id.Name,
ChildName=ch.Name,
Flag=ch.Flag
};