Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/linq/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# LINQ到数据表查询的帮助_C#_Linq_Dataset - Fatal编程技术网

C# LINQ到数据表查询的帮助

C# LINQ到数据表查询的帮助,c#,linq,dataset,C#,Linq,Dataset,我已经成功地使用OLEDB将excel文件导入到datatable并在数据网格视图中显示它。现在我想使用LINQ并将网格的数据源设置为LINQ查询,但是它不起作用。以下是完整的代码: OleDbConnection conn = new OleDbConnection(); conn.ConnectionString = @"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\Users\Nick\Desktop\Pricing2.xlsx" + @

我已经成功地使用OLEDB将excel文件导入到datatable并在数据网格视图中显示它。现在我想使用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; 

数据绑定与ILists一起工作,而不是
IEnumerable
s

为了绑定到LINQ查询,您需要调用
ToList()

要绑定到LINQ到数据表查询(返回
DataRow
s的LINQ查询),。
这将返回一个
ITypedList
实现,该实现将显示表中列的属性


如果选择匿名类型(不是
DataRow
),则只需
ToList()

.ToList()
将不起作用,
.CopyToDataTable()
是正确的调用。

为什么不
dataGridview1.DataSource=dt?LINQ不用于此。@Danny:我假设他正在测试一个更复杂的查询。我正在将datatable结果的片段插入我的数据库中。我使用LINQ to SQL作为ADO.NET,手动创建/访问存储过程是浪费时间。我知道不是,我在这里发布的只是测试通过excel文件收集的数据输出的代码。上面我解释了我打算做的事情。Tolist()得出了一些非常奇怪的结果,我忘了。CopyToDataTable()这是为了,我不知道你是否编辑了你的帖子以包含它,或者你已经有了它,但如果是后者,我立即看到了Tolist(),没有阅读其余的:(我写了一篇文章,并给出了更详细的解释。