【发布时间】:2015-05-28 03:16:47
【问题描述】:
我正在查询 SQL 服务器和 MySQL 服务器,然后使用生成的 MySQL 数据表对生成的 SQL 数据表进行左连接。
但是,我在尝试使用连接数据创建新数据表时遇到错误。
这些是表结构:
SqlDataTable MySqlDataTable
------------- ---------------
UserID, Field1 SiteUserID, Field2
200, 12 200, 25
这是我的代码 sn-p。我在倒数第二行收到“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);
【问题讨论】:
-
您最好手动执行此操作,而不是试图花哨并在一个大的 LINQ 语句中完成所有操作。如果您将两组数据都检索到强类型对象的集合中,然后循环其中一个,同时搜索另一个以寻找匹配项,并将它们组合成一个更好的强类型集合,那么您在做什么会更清楚,并且可能执行完全相同,因为无论如何这就是 LINQ 将在幕后做的事情。
-
我试图避开这条路线,因为我想熟悉 LINQ,并且更喜欢这种形式的语言简洁。
标签: c# mysql .net sql-server datatable