Linq 连接表并创建动态列错误

Posted

技术标签:

【中文标题】Linq 连接表并创建动态列错误【英文标题】:Linq join table and create dynamic column error 【发布时间】:2019-12-09 03:44:15 【问题描述】:

我想在 Linq 中为我的连接表创建动态列。

这是我四处询问后的代码。但它给了我另一个这样的错误。

代码:

var SelectedDT1AndDt2= 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.ToString()).ToArray()
                        .Union(from dc2 in dt2.Columns.Cast<DataColumn>()
                        select dc2.ColumnName).ToArray()
                       , false);
SelectedDT1AndDt2.CopyToDataTable();

错误:

输入字符串的格式不正确。无法存储在 id 列中。预期类型是 Int64。

【问题讨论】:

您能否提供更多信息(如类型和技术)。您的标题看起来像一条错误消息,但您在帖子正文中提供了不同的错误消息。他们有关系吗?您是否尝试过零敲碎打地做您想做的事情并弄清楚错误发生在哪一步? 对不起,我的标题错误,我发帖的时候没有意识到,帖子中的错误是正确的 【参考方案1】:

这是因为列导入不是Int'64'类型,我再次检查确认原来的col类型是Int'32'。

【讨论】:

以上是关于Linq 连接表并创建动态列错误的主要内容,如果未能解决你的问题,请参考以下文章

将静态列添加到动态 LINQ 查询

具有动态列组的 LINQ GroupBy

动态数据库模式 [关闭]

选择子句问题中的动态列

C# DataTable 内连接与动态列

在CQ中使用动态表达式在LINQ to Entities中使用INT列