我正在尝试将gridview绑定到使用存储过程的linq到sql查询。当我运行页面时,我收到以下错误:
数据源是无效类型。它必须是IListSource,IEnumerable或IDataSource。
var db = new TableItemDataContext();
var q = db.sp_SearchForItems("1","2","3","4");
GridView1.DataSource = q;
GridView1.DataBind();
任何想法?
答案 0 :(得分:3)
使用ToList()扩展方法将查询转换为项目列表。
GridView1.DataSource = q.ToList();
这也会产生在转换时运行查询的效果,因此您可能希望查看是否只是转换为IEnumerable。
修改:根据评论记录澄清。问题在于SPROC的构建以及LINQ无法检测返回值。根据{{3}}更改SPROC允许LINQ检测模式,之后可以更改SPROC。