0

I have a linq statement that returns 0 row while it should return 2 rows and it is what I got from my converted sql query. don't know what is wrong in my linq statement. Below is the linq and the matching sql query that works.

var list = (from DataRow b in VisData.DbData.Tables["valuebuilding"].Rows
            join DataRow g in VisData.DbData.Tables["valuegroup"].Rows 
                 on b.Field<decimal>("VBD_BLDG_NUM") equals g.Field<decimal>("VGP_GROUP_ID") into buildinggroup
            from r in buildinggroup 
            join DataRow c in VisData.DbData.Tables["constr"].Rows
                 on r.Field<decimal>("VBD_BID") equals c.Field<decimal>("CNS_BID")
            join DataRow o in VisData.DbData.Tables["constrcom"].Rows
                 on c.Field<decimal>("CNS_BID") equals o.Field<decimal>("CNS_BID")
            join DataRow d in VisData.DbData.Tables["constrdep"].Rows
                 on o.Field<decimal>("CNS_BID") equals d.Field<decimal>("CNS_BID")
            where (!(r.RowState == DataRowState.Deleted || r.RowState == DataRowState.Detached)
                     && !(o.RowState == DataRowState.Deleted || o.RowState == DataRowState.Detached)
                     && !(c.RowState == DataRowState.Deleted || c.RowState == DataRowState.Detached)
                     && !(d.RowState == DataRowState.Deleted || d.RowState == DataRowState.Detached)
                     && r.Field<decimal>("CNS_PID") == VisData.PID)
            select new BuildingGroupDetail()
                        {
                            GroupName = r.Field<string>("VGP_GROUP_NAME"),
                            BuildingNum = r.Field<decimal>("VBD_BLDG_NUM"),
                            Primary = r.Field<bool>("VBD_ISPRIMARY"),
                            Structure = c.Field<string>("CNS_STYLE"),
                            StructDesc = c.Field<string>("CNS_STYLE_DESC"),
                            AYB = d.Field<decimal>("CNS_AYB"),
                            Grade = o.Field<string>("CNS_GRADE"),
                            Class = o.Field<string>("CNS_STRUCT_CLASS")
                        }).ToList();

SQL:

SELECT 
    g.VGP_GROUP_NAME, b.VBD_BLDG_NUM, b.VBD_ISPRIMARY, c.CNS_STYLE, 
    c.CNS_STYLE_DESC, d.CNS_AYB, m.CNS_GROUP, m.CNS_STRUCT_CLASS
FROM 
    REAL_PROP.VALUEBUILDING b 
LEFT JOIN 
    REAL_PROP.VALUEGROUP g ON b.VBD_BLDG_NUM = g.VGP_GROUP_ID
JOIN 
    REAL_PROP.CONSTR c ON b.VBD_BID = c.CNS_BID
JOIN
    REAL_PROP.CONSTRCOM m ON c.CNS_BID = m.CNS_BID
JOIN
    REAL_PROP.CONSTRDEP d ON m.CNS_BID = d.CNS_BID
WHERE
    c.CNS_PID = 15594
Jane wang
  • 298
  • 1
  • 3
  • 16

0 Answers0