我正在使用以下代码在两个表之间执行左外连接;一个来自SQL,一个来自MySQL。基本上,我想获取生成的SQL数据表,向其中添加一列,并且如果在MySQL数据表中存在具有匹配UserID的行,请将该值添加到SQL数据表的新列中以获取匹配记录。C#LINQ生成“指定的转换无效”错误
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<int>("UserID") equals Convert.ToInt32(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 : r.Field<int>("Field2")
}, false);
但是,我得到一个“指定的转换无效”关于执行“选择dtResult.LoadDataRow”的路线错误。我一直无法弄清楚为什么,并且我已经三重检查了数据类型是否匹配。
尝试删除'select'语句中的每一行,每次一个。转换那里的一个值可能会遇到麻烦。 – 2015-03-25 02:05:57
顺便说一句,我发现它无法投射数据的原因是因为在幕后,“Field2”是一个MySQL Count()函数,它返回LONG数据类型,而不是INT! – blizz 2015-03-25 05:50:26