Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/34.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调用存储过程_Asp.net_Linq To Sql_Stored Procedures - Fatal编程技术网

Asp.net 从linq调用存储过程

Asp.net 从linq调用存储过程,asp.net,linq-to-sql,stored-procedures,Asp.net,Linq To Sql,Stored Procedures,嘿,伙计们, 我有一个名为sp_sitesearch的存储过程,它返回站点搜索的结果,现在我想做的是,我想使用LINQ将这个sp调用到gridview,因为我的一个朋友建议LINQ的性能比DataTable或DataSet快。所以我想尝试一下,所以我创建了一个dbml,并在其中添加了我的SP,以及我在下面编写的.cs代码中添加了SP。 SiteSearchDataContext siteSearch=新建SiteSearchDataContext(); gridArticle.DataSour

嘿,伙计们, 我有一个名为sp_sitesearch的存储过程,它返回站点搜索的结果,现在我想做的是,我想使用LINQ将这个sp调用到gridview,因为我的一个朋友建议LINQ的性能比DataTable或DataSet快。所以我想尝试一下,所以我创建了一个dbml,并在其中添加了我的SP,以及我在下面编写的.cs代码中添加了SP。

SiteSearchDataContext siteSearch=新建SiteSearchDataContext();
gridArticle.DataSource=siteSearch.sp_siteSearch(1,关键字);
gridArticle.DataBind();


在这里,它抛出了一个错误,它应该返回IEnumerable或IDataSource,当我发现它返回int时,我感到震惊。。。但是我不知道怎么做,因为我的sp没有返回任何东西,它只返回一个resultset,所以有人能建议我如何使用它绑定gridview。

您不能将IQueryable绑定到数据源。你需要

gridArticle.DataSource = siteSearch.sp_SiteSearch(1, keyword).ToList();

听起来您没有将存储过程映射为实体数据模型中的返回类型。如果返回到数据模型并编辑函数导入,则窗口中应该有一个标记为“Returns a Collection of”的部分,您可以使用该部分来定义存储过程返回的内容。希望它返回的内容可以直接映射到数据模型中的实体类型,因为这将允许您从下拉列表中简单地选择一个实体。如果返回的结果无法清晰地映射到现有实体,请参阅MSDN上的。

谢谢您的回复,但我无法在sp_SiteSearch(1,关键字).ToList()之后找到ToList();我认为它默认返回int,所以我必须使用string()选项。不确定为什么您会认为无法绑定到
IQueryable
,它同时实现了
IEnumerable
IEnumerable
@Joel您可能可以绑定到某些IQueryable,但根据我的经验,LINQ到SQL IQueryable无法工作@Abbas如果您得到一个int,那么很可能SQL没有被正确解释。您可以发布实际的SP吗?