使用循环在 Linq 中创建列
Create columns in Linq By using Looping
我使用 linq 左连接另一个数据 table,这使我需要使用 Linq 为新的左连接数据创建列 table。
是否要循环遍历列以在 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"),
dr1.Field<Int64?>("col_sample"),
dr1.Field<String>("col2"),
dr1.Field<String>("colName"),
dr1.Field<String>("columns"),
dr1.Field<String>("col_no"),
......
是不是要用Linq或者C#或者其他编码方式来实现???
我手头没有电脑,但你可以试试:
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())
)
我使用 linq 左连接另一个数据 table,这使我需要使用 Linq 为新的左连接数据创建列 table。
是否要循环遍历列以在 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"),
dr1.Field<Int64?>("col_sample"),
dr1.Field<String>("col2"),
dr1.Field<String>("colName"),
dr1.Field<String>("columns"),
dr1.Field<String>("col_no"),
......
是不是要用Linq或者C#或者其他编码方式来实现???
我手头没有电脑,但你可以试试:
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())
)