帮助LINQ到DataTable查询

时间:2010-12-29 02:30:46

标签: c# linq dataset

我已经成功使用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; 

2 个答案:

答案 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()是正确的电话。