1

我正在尝试编写关于父子关系表的 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名称标志
1 一个 0
 2 乙 0
 3 C 1

儿童类型:-

Id---------Name-----------------Parent_Type_Id--------Flag
 1 GA 1 0
 2 GB 1 1
 3 GC 2 1
 4 广东 2 0
 5 通用电气 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 的数据。输出数据:-

Id Parent_Type_Id 名称 ChildName 标志
1 1 GA 0
4 2 乙 GD 0

Upper Query 正在运行,并且输出正确。谁能告诉我这个查询将如何在 lambda 表达式中完成。

4

3 回答 3

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
                };
于 2013-04-16T12:52:58.980 回答
0

请分享你的 lamda 表达式.... 试试这个,也许这对你有帮助。

IList parentList=parent_type.Where(x=>x.FLAG==0 && (x=>x.child_type.where(t=>t.FLAG==0).Count>0)).ToList();

于 2012-12-05T05:06:26.577 回答
0

尝试这个 ....

var lambdaExpression = ParentType.Where(c => c.Flag == 0) .Join(ChildType.Where(uc => uc.Flag == 0), c => new { c.Name, c.ID }, uc => 新 { uc.Name, uc.ID }, (c, uc) => c);

如果仍然面临一些问题,请参阅此...

将 SQL 子查询转换为 In 到 Linq Lambda

如何将表达式树转换为部分 SQL 查询?

于 2012-12-05T05:09:29.293 回答