0
所以我有一个Excel表格和一个mssql表格,并且两个正在使用LINQ在Excel表格列0(第一个)和mssql列textfield2上进行连接。 我在加入字母数字值时看到的问题似乎无法解决。当值是数字时它确实有效。在LINQ中比较sql字段和excel字段
var adapter = new OleDbDataAdapter("SELECT * FROM [Sheet1$]", excconnectionstring);
var adapter2 = new SqlDataAdapter("SELECT * FROM Table1", sqlconnectionstring);
var ds = new DataSet();
adapter.Fill(ds, "excel");
adapter2.Fill(ds, "sql");
var excel = ds.Tables["excel"].AsEnumerable();
var esqel = ds.Tables["sql"].AsEnumerable();
var query = from exc in excel
from sql in esqel
where exc[0].ToString() == sql.Field<string>("textfield2")
select new
{
debnr = sql.Field<string>("debnr"),
bedrag = double.Parse(exc[5].ToString())/100,
description = DateTime.Parse(exc[7].ToString(), new CultureInfo("nl-NL")).ToString("MMM yyyy"),
text1 = exc[0].ToString(),
projectno = sql.Field<string>("textfield1"),
central = sql.Field<string>("CentralizationAccount").Trim()
};
编辑:看来字母,当我在Excel工作表,顶部的一个字母数字值责令值做工作。但后来我有问题,它不能在数值上工作。
侧面说明:使用['Join',而不是'Where'(http://stackoverflow.com/questions/5551264/why-is-linq-join当链接Linq-To-Objects中的表时,这要比链接快得多)。 –
我不能重现那个;连接在两个表中的代码和字符串都正常工作。我想有一些缺失。 –
您必须确保将第一列中的数值转换为工作表本身_中的文本。 OleDB推断来自第一对行的Excel列的类型。与该类型不匹配的值将作为空值传递。另外,观看领先和尾随空间。 –