gpt4 book ai didi

C# 左连接两个数据表

转载 作者:行者123 更新时间:2023-11-29 07:40:29 26 4
gpt4 key购买 nike

我正在查询 SQL 服务器和 MySQL 服务器,然后使用生成的 MySQL 数据表对生成的 SQL 数据表执行左连接。

但是,在尝试使用连接的数据创建新数据表时出现错误。

这些是表结构:

SqlDataTable           MySqlDataTable
------------- ---------------
UserID, Field1 SiteUserID, Field2
200, 12 200, 25

这是我的代码片段。我在倒数第二行收到“mySqlDataRows”的“脱离上下文”错误:

var dtResult = new DataTable();
dtResult.Columns.Add("UserID", typeof (int));
dtResult.Columns.Add("Field1", typeof (string));
dtResult.Columns.Add("Field2", typeof (int));

var result = from sqlDataRows in sqlDataTable.AsEnumerable()
join mySqlDataRows in mySqlDataTable.AsEnumerable()
on sqlDataRows.Field<string>("UserID") equals mySqlDataRows.Field<string>("SiteUserID") into lj
from r in lj.DefaultIfEmpty()
select dtResult.LoadDataRow(new object[]
{
sqlDataRows.Field<int>("UserID"),
sqlDataRows.Field<string>("Field1"),
r == null ? 0 : mySqlDataRows.Field<int>("Field2") //The name 'mySqlDataRows' does not exist in the current context
}, false);

最佳答案

您应该从最终连接的对象中进行选择,即 r。

 var result = from sqlDataRows in sqlDataTable.AsEnumerable()
join mySqlDataRows in mySqlDataTable.AsEnumerable()
on sqlDataRows.Field<string>("UserID") equals mySqlDataRows.Field<string>("SiteUserID") into lj
from r in lj.DefaultIfEmpty()
select dtResult.LoadDataRow(new object[]
{
r.Field<int>("UserID"),
r.Field<string>("Field1"),
r == null ? 0 : r.Field<int>("Field2")
//The name 'mySqlDataRows' does not exist in the current context
}, false);

问题是 r 仅包含 mySqlDataRows 表中的列,因为您使用了 into 语句。为什么需要这个语句:from r in sqlDataRows.DefaultIfEmpty()?我在下面发布了一个有效的代码:

var result = from sqlDataRows in sqlDataTable.AsEnumerable()
join mySqlDataRows in mySqlDataTable.AsEnumerable()
on sqlDataRows.Field<int>("UserID") equals mySqlDataRows.Field<int>("SiteUserID")
select dtResult.LoadDataRow(new object[]
{
sqlDataRows.Field<int>("UserID"),
sqlDataRows.Field<string>("Field1"),
mySqlDataRows == null ? 0 : mySqlDataRows.Field<int>("Field2")
}, false);

关于C# 左连接两个数据表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29238941/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com