ISingleResult 处理单个返回结果集:比如select * from UserInfo
IMultipleResults处理多个返回结果集:比如 select * from UserInfo;select * from Role
LinqDBDataContext db = new LinqDBDataContext(SqlHelper.SqlConnectString);
IMultipleResults result = db.Pr_GetUserAndRole();//执行存储过程s返回两个结果集
IEnumerable<UserInfo> users = from u in result.GetResult<UserInfo>()//UserInfo结果集
where u.ID < 10
select u;
IEnumerable<Role> roles = result.GetResult<Role>();//Role结果集
gvUser.DataSource = users;//绑定
gvUser.DataBind();
gvRole.DataSource = roles;//绑定
gvRole.DataBind();
下面是自动生成的Pr_GetUserAndRole()方法
//[Function(Name="dbo.Pr_GetUserAndRole")]
//public ISingleResult<Pr_GetUserAndRoleResult> Pr_GetUserAndRole()
//{
// IExecuteResult result = this.ExecuteMethodCall(this, ((MethodInfo)(MethodInfo.GetCurrentMethod())));
// return ((ISingleResult<Pr_GetUserAndRoleResult>)(result.ReturnValue));
//}
下面是修改后的Pr_GetUserAndRole()方法
[Function(Name = "dbo.Pr_GetUserAndRole")]
[ResultType(typeof(UserInfo))] //这一句很重要,是多出来的,因为必需要返回一个类型。
public IMultipleResults Pr_GetUserAndRole()
{
IExecuteResult result = this.ExecuteMethodCall(this, ((MethodInfo)(MethodInfo.GetCurrentMethod())));
return ((IMultipleResults)(result.ReturnValue));
}