Linq to entities 将动态查询结果转换为列表以绑定到网格

Linq to entities 将动态查询结果转换为列表以绑定到网格,linq-to-entities,dynamic-linq,Linq To Entities,Dynamic Linq,我在vb.net中使用System.Linq.Dynamic库使用以下查询将结果绑定到gridview Dim customers = model.Customers _ .OrderBy(sortExp + " " + sortOrder) _ .Select("new (CustomerID, CompanyName, ContactName, ContactTitle, Address, City, Region, PostalCode, Country, Phon

我在vb.net中使用System.Linq.Dynamic库使用以下查询将结果绑定到gridview

Dim customers = model.Customers _
    .OrderBy(sortExp + " " + sortOrder) _
    .Select("new (CustomerID, CompanyName, ContactName, ContactTitle, Address, City,     Region, PostalCode, Country, Phone, Fax)")

grdCustomers.DataSource = customers
grdCustomers.DataBind()
将显示以下错误

不支持直接将数据绑定到存储查询(DbSet、DbQuery、DbSqlQuery)。 而是用数据填充数据库集,例如通过在数据库集上调用Load, 然后绑定到本地数据。对于WPF,绑定到DbSet.Local。 对于WinForms,绑定到DbSet.Local.ToBindingList()。

返回的结果是DbQuery类型,但我无法对结果执行ToList()


必须有一种更干净的方法来创建列表,而不是通过客户交互并手动创建列表。

您使用什么?webforms、winforms、wpf或其他什么?我使用的是webforms,VS2012。您可以尝试
grdCustomers.DataSource=list.Cast().AsEnumerable()
在这个问题上似乎也是这样,因为DYMANIQINQ查询返回
IQueryable
我尝试了grdCustomers.DataSource=customers.Cast(动态类的).AsQueryable()和grdCustomers.DataSource=customers.Cast(员工的).AsQueryable(),但仍然得到相同的错误。还请注意,我修改了问题中的一个错误。Datasource分配给customers变量,而不是list变量。当我在监视窗口中检查客户的值时,结果的类型是System.Data.Entity.Infrastructure.DbQuery(属于System.Linq.Dynamic.DynamicQueryable)。基本上,我想要一个键入的员工列表。在我的示例中,
AsEnumerable()
为什么尝试
AsQueryable()
?:-)