1

I have done an inner join, it shows only the matching record with following query :-

var data = from t1 in ctx.tblEmp
           join t2 in ctx.tblHelp 
               on t1.Field equals t2.Fld
           where t1.Id == Id && 
                 t2.Id == Id
           select new Settings { Master = t1.Labelname, OrderNo = t2.OrderNo};

I want all the records from tblEmp & only matching records from tblHelp.

How to do this?

ekad
  • 14,436
  • 26
  • 44
  • 46
Anup
  • 9,396
  • 16
  • 74
  • 138

2 Answers2

2

Use as

 var data = from t1 in ctx.tblEmp
       join t2 in ctx.tblHelp 
           on t1.Field equals t2.Fld into u
           from t2 in u.DefaultIfEmpty()
       where t1.Id == Id && 
             t2.Id == Id

       select new Settings { Master = t1.Labelname, OrderNo = t2.OrderNo};

Try this

 var data = from t1 in ctx.tblEmp
       join t2 in ctx.tblHelp 
           on t1.Field equals t2.Fld into u
           from t2 in u.DefaultIfEmpty()
       where t1.Id == Id 
       orderby columnname // Added Order By
       select new Settings { Master = t1.Labelname, OrderNo = t2.OrderNo==null ?"":t2.OrderNo};
Amit
  • 15,217
  • 8
  • 46
  • 68
1
    var query = from t1 in ctx.tblEmp
                    join t2 in ctx.tblHelp on t1 equals t2.Fld into tempGroup
                    from subpet in tempGroup.DefaultIfEmpty()
                    select new { t1.Labelname, OrderNo = (subpet == null ? String.Empty : subpet.OrderNo) };
Vijay Agarwal
  • 71
  • 1
  • 10