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
Asp.net 获得';数据源的类型无效';将Linq查询绑定到Gridview时_Asp.net_Linq_Linq To Sql - Fatal编程技术网

Asp.net 获得';数据源的类型无效';将Linq查询绑定到Gridview时

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无法

我正在尝试将gridview绑定到使用存储过程的linq to sql查询。当我运行页面时,出现以下错误:

数据源是无效的类型。它必须是IListSource、IEnumerable或IDataSource

有什么想法吗?

使用ToList()扩展方法将查询转换为项目列表

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();