Linq中使用Left Join

 var query1 =
                    from s in ds.AsEnumerable()
                    join t in dt.AsEnumerable() on s.Field<string>("Mid") equals t.Field<string>("C_METER_NUMBER") into temp
                    from tt in temp.DefaultIfEmpty() //DefaultIfEmpty()是为了达到左连接的目的,不使用DefaultIfEmpty() 相当于inner join
                    select new
                    {
                        抄表情况 = tt == null ? "" : tt.Field<object>("state"),
                        用户编号 = tt == null ? "" : tt.Field<object>("c_user_id"),
                        用户姓名 = tt == null ? "" : tt.Field<object>("c_user_name"),
                        表编号 = s.Field<object>("Mid"),
                        起度 = tt == null ? "" : tt.Field<object>("n_meter_degrees"), //这里主要第二个集合有可能为空。需要判断
                        止度 = s.Field<object>("Degrees"),
                        表地址 = tt == null ? "" : tt.Field<object>("c_user_address")
                    };
ds  和 dt 都是DataTable;
原文地址:https://www.cnblogs.com/pyf97/p/14316619.html