十年网站开发经验 + 多家企业客户 + 靠谱的建站团队
量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决
本文向大家介绍Linq多个结果集,可能好多人还不了解Linq多个结果集,没有关系,看完本文你肯定有不少收获,希望本文能教会你更多东西。

创新互联建站专注于成都网站设计、网站建设、外贸网站建设、网页设计、网站制作、网站开发。公司秉持“客户至上,用心服务”的宗旨,从客户的利益和观点出发,让客户在网络营销中找到自己的驻足之地。尊重和关怀每一位客户,用严谨的态度对待客户,用专业的服务创造价值,成为客户值得信赖的朋友,为客户解除后顾之忧。
Linq多个结果集
这种存储过程可以生成Linq多个结果集形状,但我们已经知道结果的返回顺序。
下面是一个按顺序返回Linq多个结果集的存储过程Get Customer And Orders。 返回顾客ID为"SEVES"的顾客和他们所有的订单。
- ALTER PROCEDURE [dbo].[Get Customer And Orders]
 - (@CustomerID nchar(5))
 - -- Add the parameters for the stored procedure here
 - AS
 - BEGIN
 - -- SET NOCOUNT ON added to prevent extra result sets from
 - -- interfering with SELECT statements.
 - SET NOCOUNT ON;
 - SELECT * FROM Customers AS c WHERE c.CustomerID = @CustomerID
 - SELECT * FROM Orders AS o WHERE o.CustomerID = @CustomerID
 - END
 
拖到设计器代码如下:
- [Function(Name="dbo.[Get Customer And Orders]")]
 - public ISingleResult
 - Get_Customer_And_Orders([Parameter(Name="CustomerID",
 - DbType="NChar(5)")] string customerID)
 - {
 - IExecuteResult result = this.ExecuteMethodCall(this,
 - ((MethodInfo)(MethodInfo.GetCurrentMethod())), customerID);
 - return ((ISingleResult
 ) - (result.ReturnValue));
 - }
 
同样,我们要修改自动生成的代码:
- [Function(Name="dbo.[Get Customer And Orders]")]
 - [ResultType(typeof(CustomerResultSet))]
 - [ResultType(typeof(OrdersResultSet))]
 - public IMultipleResults Get_Customer_And_Orders
 - ([Parameter(Name="CustomerID",DbType="NChar(5)")]
 - string customerID)
 - {
 - IExecuteResult result = this.ExecuteMethodCall(this,
 - ((MethodInfo)(MethodInfo.GetCurrentMethod())), customerID);
 - return ((IMultipleResults)(result.ReturnValue));
 - }
 
同样,自己手写类,让其存储过程返回各自的结果集。
- IMultipleResults result = db.Get_Customer_And_Orders("SEVES");
 - //返回Customer结果集
 - IEnumerable
 customer = - result.GetResult
 (); - //返回Orders结果集
 - IEnumerable
 orders = - result.GetResult
 (); - //在这里,我们读取CustomerResultSet中的数据
 - foreach (CustomerResultSet cust in customer)
 - {
 - Console.WriteLine(cust.CustomerID);
 - }
 
语句描述:这个实例使用存储过程返回客户“SEVES”及其所有订单。以上介绍Linq多个结果集