MySQL查询的Lambda表达式查询

时间:2012-12-04 13:13:35

标签: mysql c#-4.0 lambda

我正在尝试编写关于父子关系表的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表达式中完成。

3 个答案:

答案 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);

如果仍然面临一些问题,请看...

Convert SQL Sub Query to In to Linq Lambda

How to convert an expression tree to a partial SQL query?

答案 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
                };