Monday, April 4, 2016

Left Outer join by LINQ

 var opd_data = (from t1 in db.HMS_OPD
                         join t2 in db.HMS_OPDMST on t1.PATIENTYYID equals t2.PATIENTYYID
                         join t3 in db.HMS_HEADIO on t1.BILLID equals t3.HEADID
                         join t4 in db.HMS_TEST on t1.TESTID equals t4.TESTID
                        into ps from t4 in ps.DefaultIfEmpty()
 where t1.COMPID == compid && t1.TRANSDT == fdate && t1.PATIENTYYID == patientyid &&
                                        (t1.TESTID == t4.TESTID || t1.TESTID == null)
                                        select new
                                        {
                                            Id = t1.ID,

                                            compid = t1.COMPID,
                                            Transdate = t1.TRANSDT,
                                            Patientid = t1.PATIENTID,
                                            Patientyid=t1.PATIENTYYID,
                                            referid = t1.REFERID,
                                            billid=t1.BILLID,
                                            billname = t3.HEADNM,
                                            testsl = t1.TESTSL,
                                            tcatid = t1.TCATID,
                                         
                                            testid = t1.TESTID,
                                            testname = t4.TESTNM,
                                            amount = t1.AMOUNT,
                                            pcntr = t1.PCNTR,
                                            pcntd = t1.PCNTD,
                                            discr = t1.DISCR,
                                            remarks = t1.REMARKS


                                        });

                        foreach (var item in opd_data)
                        {
                            string testnm = "";
                            if (item.testid == null)
                            {
                                testnm = "";
                            }
                            else
                            {
                                testnm = item.testname;
                            }
                            yield return new OpdDTO
                            {
                                ID = item.Id,
                                COMPID = item.compid,
                                PatientName = PatientName,
                                TransactionDate = Convert.ToString( item.Transdate),
                             
                                PatientID = item.Patientid,
                                PatientYearID = Convert.ToInt64(item.Patientyid),
                                ReferID = item.referid,
                                TestSerial = item.testsl,
                                BillId = item.billid,
                                Billname = item.billname,
                                TestCategoryId = item.tcatid,
                                //TestCategoryName = item.tCatname,
                                TestID = item.testid,
                                TestName =testnm,
                                Amount = item.amount,
                                Pcntd = item.pcntd,
                                Pcntr = item.pcntr,
                                Discr = item.discr,
                                Remarks = item.remarks

                            };
                        }

No comments:

Post a Comment