我需要将从此LINQ返回的数据存储到实体查询(下面)到DataTable中,以便我可以将它用作DataGridView的数据源,我该怎么做?LINQ to Entities查询到DataTable
在这种情况下,我使用LINQ to Entities来针对实体框架概念模型进行查询,因此db
是一个继承自System.Data.Entity.DbContext
的类。
using (TccContext db = new TccContext())
{
var query = from vendedor in db.Vendedores.AsEnumerable()
where vendedor.codigo == Convert.ToInt32(textBoxPesquisa.Text)
select vendedor;
// I'd like to do something like DataTable dt = query;
}
我试过这样做(下面),但它在执行过程中会引发异常[1]。
using (TccContext db = new TccContext())
{
IEnumerable<DataRow> query = (IEnumerable<DataRow>)(from vendedor in db.Vendedores.AsEnumerable()
where vendedor.codigo == Convert.ToInt32(textBoxPesquisa.Text)
select vendedor);
using (DataTable dt = query.CopyToDataTable<DataRow>())
{
this.dataGridViewProcura.Rows.Add(
dt.Rows[0][0], // Código
dt.Rows[0][1], // Nome
dt.Rows[0][2]); // Venda Mensal
}
}
[1]:异常:InvalidCastException
Unable to cast object of type 'WhereEnumerableIterator`1[Projeto_TCC.Models.Vendedor]' to type 'System.Collections.Generic.IEnumerable`1[System.Data.DataRow]'.
在此先感谢
如果我像这样使用方法CopyToDataTable在'query'中将不可用。请注意,我正在使用实体框架。 – Zignd
我在最后一个源文件上输入了错字,并且正如编辑所说,CopyToDataTable方法应该在那里工作。顺便说一句 - 答案有帮助吗? –
正如你可以在同一个链接中看到的,为了获得对CopyToDataTable方法的访问,IEnumerable中的T类型必须是DataRow类型,但是相反,您使用了表示数据库表Vendedor的类,最终我无法访问那些包含CopyToDataTable的扩展方法。 –
Zignd