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;