[英]Help with LINQ to DataTable query
我已经成功地使用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;
数据绑定适用于IList
,而不适用于IEnumerable
。
为了绑定到LINQ查询,您需要调用ToList()
。
要绑定到LINQ-to-DataTable查询(返回DataRow
的LINQ查询),则需要调用AsDataView()
。
这将返回一个ITypedList
实现,该实现将显示表中各列的属性。
如果选择匿名类型(而不是DataRow
), ToList()
需要ToList()
。
.ToList()
将不起作用, .CopyToDataTable()
是正确的调用。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.