如何实现linq存储过程返回多条结果集
发表于:2025-11-07 作者:千家信息网编辑
千家信息网最后更新 2025年11月07日,这篇文章将为大家详细讲解有关如何实现linq存储过程返回多条结果集,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。linq存储过程默认生成的代码是ISi
千家信息网最后更新 2025年11月07日如何实现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安全错误
数据库的锁怎样保障安全
数据库技术向导
电脑插服务器就开机慢
icloud服务器出现错误
数据库实训的主要目的
爬走网络安全插画
建行外包网络安全工程师收入
广东网络技术进出口
存储管理服务器故障
数据库同步 原理
网络安全管理讲座
4路刀片服务器
重庆市格致软件开发公司电话
基建网络安全管理局
软件开发怎么说自己的优缺点
四川实用erp软件开发
安徽视频会议服务器虚拟主机
佛山专业的软件开发公司
零基础学网络安全视屏教学哪里有
甘肃广电5g网络安全吗
户外体育网络安全
莆田万兴网络技术
浩天下网络技术服务有限公司
热血三国都有哪些服务器啊
服务器采购建设方案
wincc安装数据库一直失败
工作表自动提取数据库
舒悦小说软件开发
普通服务器机柜型号
亿凯西安软件开发工资
淮阴区吧乐吧网络技术服务部