代码改变世界

DataTable Linq 左连接

2020-05-26 17:39  idea555  阅读(368)  评论(0)    收藏  举报

(一)Linq左连接案例分析

有如下两个DataTable:localDt和schemaDt

image

image

要实现这两个DataTable的左连接,得到如下效果:

分析一:

var temp1 = (from schema in schemaDt.AsEnumerable()
             join local in localDt.AsEnumerable() 
             on schema.Field<string>("name") equals local.Field<string>("sql_name")
             into tempTable
             from item in tempTable.DefaultIfEmpty<DataRow>()
             select item).ToList();

image

分析二

var temp2 = (from local in localDt.AsEnumerable()
             join schema in schemaDt.AsEnumerable() 
             on local.Field<string>("sql_name") equals schema.Field<string>("name")
             into tempTable
             from item in tempTable.DefaultIfEmpty()
             select item).ToList();

 

分析三:

var temp3 = (from schema in schemaDt.AsEnumerable()
             join local in localDt.AsEnumerable() on schema.Field<string>("name") equals local.Field<string>("sql_name")
             into tempTable
             from item in tempTable.DefaultIfEmpty<DataRow>(localDt.NewRow())
             select item).ToList();

image

分析四:

var temp4 = (from schema in schemaDt.AsEnumerable()
            join local in localDt.AsEnumerable() on schema.Field<string>("name") equals local.Field<string>("sql_name")
            into tempTable
            from item in tempTable.DefaultIfEmpty<DataRow>(schemaDt.NewRow())
            select item).ToList();

image