将Linq查询绑定到Gridview时获取“数据源是无效类型”

时间:2009-03-03 02:55:07

标签: asp.net linq linq-to-sql

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

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

var db = new TableItemDataContext();
var q = db.sp_SearchForItems("1","2","3","4"); 
GridView1.DataSource = q;
GridView1.DataBind();

任何想法?

1 个答案:

答案 0 :(得分:3)

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

GridView1.DataSource = q.ToList();

这也会产生在转换时运行查询的效果,因此您可能希望查看是否只是转换为IEnumerable。

修改:根据评论记录澄清。问题在于SPROC的构建以及LINQ无法检测返回值。根据{{​​3}}更改SPROC允许LINQ检测模式,之后可以更改SPROC。