如何实现linq存储过程返回多条结果集
发表于:2026-11-01 作者:千家信息网编辑
千家信息网最后更新 2026年11月01日,这篇文章将为大家详细讲解有关如何实现linq存储过程返回多条结果集,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。linq存储过程默认生成的代码是ISi
千家信息网最后更新 2026年11月01日如何实现linq存储过程返回多条结果集
这篇文章将为大家详细讲解有关如何实现linq存储过程返回多条结果集,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。
linq存储过程默认生成的代码是ISingleResult的,也就是只能返回一条结果集,我们先动手脚,将其改成IMultipleResults 的.实体类根据不同情况更改.
linq存储过程更改前:
[Function(Name="dbo.MeterTaskStat")] public ISingleResultMeterTaskStat([Parameter(Name="MeterTaskType", DbType="Int")] System.Nullable meterTaskType, [Parameter(Name="StartDate", DbType="DateTime")] System.Nullable startDate, [Parameter(Name="EndDate", DbType="DateTime")] System.Nullable endDate) { IExecuteResult result = this.ExecuteMethodCall(this, ((MethodInfo)(MethodInfo.GetCurrentMethod())), meterTaskType, startDate, endDate); return ((ISingleResult )(result.ReturnValue)); }
linq存储过程更改后:
[Function(Name="dbo.MeterTaskStat")] [ResultType(typeof(TaskStatData))] public IMultipleResults MeterTaskStat([Parameter(Name = "MeterTaskType", DbType = "Int")] System.NullablemeterTaskType, [Parameter(Name = "StartDate", DbType = "DateTime")] System.Nullable startDate, [Parameter(Name = "EndDate", DbType = "DateTime")] System.Nullable endDate) { IExecuteResult result = this.ExecuteMethodCall(this, ((MethodInfo)(MethodInfo.GetCurrentMethod())), meterTaskType, startDate, endDate); return ((IMultipleResults)(result.ReturnValue)); }
注意到 多一条: [ResultType(typeof(TaskStatData))] 的记录吧,简单介绍一下,必须得为linq存储过程的结果返回一个实体类型,而TaskStatData就是自己定义的类,[ResultType(typeof(TaskStatData))]必须加上,加linq存储过程回值.
linq存储过程:
set ANSI_NULLS ON set QUOTED_IDENTIFIER ON go -- =================================================== -- Author:MaHong -- Create date: 2008-09-11 -- Description: 根据口径统计某段时间内水表复装任务信息 -- =================================================== ALTER PROCEDURE [dbo].[MeterTaskStat] @MeterTaskType INT, @StartDate DateTime, @EndDate DateTime AS BEGIN SET NOCOUNT ON; SELECT MeterCaliberName,SUM(Requisition) AS RequisitionCount,SUM(Approve) AS ApproveCount, SUM(Disapprove) AS DisapproveCount,SUM(WaitWork) AS WaitWorkCount, SUM(CompleteY) AS CompleteYCount,SUM(CompleteN) AS CompleteNCount, SUM(Requisition+Approve+Disapprove+WaitWork+CompleteY+CompleteN) AS Subtotal FROM (SELECT MeterCaliberName ,CASE WHEN MeterTaskStatus=0 THEN 1 ELSE 0 END Requisition ,CASE WHEN MeterTaskStatus=1 THEN 1 ELSE 0 END Approve ,CASE WHEN MeterTaskStatus=11 THEN 1 ELSE 0 END Disapprove ,CASE WHEN MeterTaskStatus=2 THEN 1 ELSE 0 END WaitWork ,CASE WHEN MeterTaskStatus=4 THEN 1 ELSE 0 END CompleteY ,CASE WHEN MeterTaskStatus=5 THEN 1 ELSE 0 END CompleteN FROM View_MeterTaskMaintain WHERE [MeterTaskType] = @MeterTaskType AND StartDate BETWEEN @StartDate AND @EndDate) tempTable GROUP BY MeterCaliberName END
linq存储过程之在business中间层直接调用:
public class StatTaskControl : ControlBase { public IEnumerable GetStatInfo(TaskType type, DateTime startDate, DateTime endDate) { IMultipleResults info = Context.MeterTaskStat((int)type, startDate, endDate); IEnumerable data = info.GetResult(); return data; } }linq存储过程之ui层获取:
protected void StatButton_Click(object sender, EventArgs e) { DateTime startDate = DateTime.Parse(StartDate.Text); DateTime endDate = DateTime.Parse(EndDate.Text); TaskType type = TaskType.Remove; IEnumerable info = _control.GetStatInfo(type, startDate, endDate); List data = info.ToList(); RemoveGridView.DataSource = data; RemoveGridView.DataBind(); }整个linq存储过程大概就是这么几步.也不是太困难!
关于如何实现linq存储过程返回多条结果集就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。
过程
存储
结果
多条
内容
实体
就是
文章
更多
知识
篇文章
不同
不错
困难
中间层
也就是
代码
任务
信息
口径
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
湖南永感互联网科技有限公司
新华互联网科技学校
互联网科技深圳
科技互联网技术
北京互联网科技
互联网科技的发展
广州凡科互联网科技
猫创互联网科技
互联网科技中介
字节跳动和互联网科技
青岛科技大学互联网大赛研究生
恒生互联网科技指数跳水
互联网保险科技创业
内蒙古九一互联网科技
合肥互联网科技公司公章图片
美国互联网科技实力
上海京穆互联网科技有限公司
中国互联网有什么科技
云南互联网科技学费
上海互联网科技园景观
互联网的科技
互联网科技开发公司
互联网科技上市公司
上海亿帐通互联网科技
互联网科技股有哪些
科技大学互联网专业好不好
海南科技产业互联网平台
互联网软件和科技
南博望互联网科技有限公司
城市宝互联网科技有限公司