Asp.net 获得';数据源的类型无效';将Linq查询绑定到Gridview时
我正在尝试将gridview绑定到使用存储过程的linq to sql查询。当我运行页面时,出现以下错误: 数据源是无效的类型。它必须是IListSource、IEnumerable或IDataSource 有什么想法吗?使用ToList()扩展方法将查询转换为项目列表Asp.net 获得';数据源的类型无效';将Linq查询绑定到Gridview时,asp.net,linq,linq-to-sql,Asp.net,Linq,Linq To Sql,我正在尝试将gridview绑定到使用存储过程的linq to sql查询。当我运行页面时,出现以下错误: 数据源是无效的类型。它必须是IListSource、IEnumerable或IDataSource 有什么想法吗?使用ToList()扩展方法将查询转换为项目列表 GridView1.DataSource = q.ToList(); 这还将产生在转换时运行查询的效果,因此您可能想看看仅转换为IEnumerable是否有效 编辑:根据评论线索进行澄清。问题在于存储过程的构造以及LINQ无法
GridView1.DataSource = q.ToList();
这还将产生在转换时运行查询的效果,因此您可能想看看仅转换为IEnumerable是否有效
编辑:根据评论线索进行澄清。问题在于存储过程的构造以及LINQ无法检测返回值。根据更改存储过程允许LINQ检测架构,之后存储过程可以更改回来。感谢您的快速回复!我使用了ToList(),但没有获得intellisense(但有using System.Linq),在编译时收到“'int'不包含'ToList'的定义,并且找不到接受int类型第一个参数的扩展方法'ToList'Ideas?Linq一定不能确定存储过程返回的表的模式,并且认为它返回int。我知道包含临时表的存储过程存在一些问题。链接到下一条评论中的问题…——如果你能让它工作,它就可以不使用ToList()直接执行查询。嘿!这就解决了问题。我的存储过程使用了一个动态where子句,结果是一个exec(@sql)。我将其更改为使用普通sql而不使用dynamic where子句,并将存储过程重新导入到dbml中。完成后,我可以使用ToList并将存储过程更改回原来的状态。谢谢
GridView1.DataSource = q.ToList();