使用循环在Linq中创建列

我使用linq左联接另一个数据表,这使我需要使用Linq为新的leftjoin数据表创建列。

是不是要遍历列以在linq中自动创建它?

 var Dt1JoinDt2 = from dr1 in dt1.AsEnumerable()
                  join dr2 in dt2.AsEnumerable()
                  on dr1.Field<Int64>(id1) equals dr2.Field<Int64>(id2) into joinDt1AndDt2
                  from leftjoin in joinDt1AndDt2.DefaultIfEmpty()
                  select dtJoinedTable.LoadDataRow(new object[]
                  {
                   dr1.Field<String>("id"),dr1.Field<Int64?>("col_sample"),dr1.Field<String>("col2"),dr1.Field<String>("colName"),dr1.Field<String>("columns"),dr1.Field<String>("col_no"),......

这是我要使用循环创建列的代码部分

                   dr1.Field<String>("id"),......

还是可以通过Linq或C#或其他编码方法来做到这一点?

i_michael 回答:使用循环在Linq中创建列

我没有电脑,但是您可以尝试以下操作:

dt1.Columns.AsEnumerable().Select(column => dr1[column.Name]).ToArray()
,

我认为您仍然需要转换为DataColumn

using System.Data

var Dt1JoinDt2 = from dr1 in dt1.AsEnumerable()
                  join dr2 in dt2.AsEnumerable()
                  on dr1.Field<Int64>(id1) equals dr2.Field<Int64>(id2) into joinDt1AndDt2
                  from leftjoin in joinDt1AndDt2.DefaultIfEmpty()
                  select dtJoinedTable.LoadDataRow(
                   (from dc1 in dt1.Columns.Cast<DataColumn>() select dc1.ColumnName).ToArray() // cast to DataColumn,use joinDt1AndDt2
                  .Union((from dc2 in dt2.Columns.Cast<DataColumn> select dc2.ColumnName).ToArray())
                  )
本文链接:https://www.f2er.com/2965815.html

大家都在问