我已经成功使用OLEDB将excel文件导入数据表并在数据网格视图中显示它。现在我想使用LINQ并将网格的数据源设置为LINQ查询,但它不起作用。这是完整的代码:
OleDbConnection conn = new OleDbConnection();
conn.ConnectionString = @"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\Users\Nick\Desktop\Pricing2.xlsx" + @";Extended Properties=""Excel 8.0;HDR=Yes;IMEX=1;ImportMixedTypes=Text;TypeGuessRows=0""";
OleDbCommand command = new OleDbCommand
(
"SELECT * FROM [Pricing$]",conn
);
DataTable dt = new DataTable();
OleDbDataAdapter adapter = new OleDbDataAdapter(command);
adapter.Fill(dt);
var query = from a in dt.AsEnumerable()
select a;
dataGridView1.DataSource = query;
答案 0 :(得分:1)
数据绑定适用于IList
s,而非IEnumerable
s。
要绑定到LINQ查询,您需要调用ToList()
要绑定到LINQ-to-DataTable查询(返回DataRow
s)的LINQ查询,you need to call AsDataView()
instead。
这将返回一个ITypedList
实现,该实现将显示表中列的属性。
如果您选择匿名类型(不是DataRow
),则只需ToList()
。
答案 1 :(得分:0)
.ToList()
无效,.CopyToDataTable()
是正确的电话。