Linq结果集形状怎么实现
发表于:2025-11-08 作者:千家信息网编辑
千家信息网最后更新 2025年11月08日,这篇文章主要介绍"Linq结果集形状怎么实现",在日常操作中,相信很多人在Linq结果集形状怎么实现问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答"Linq结果集形状怎么
千家信息网最后更新 2025年11月08日Linq结果集形状怎么实现
这篇文章主要介绍"Linq结果集形状怎么实现",在日常操作中,相信很多人在Linq结果集形状怎么实现问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答"Linq结果集形状怎么实现"的疑惑有所帮助!接下来,请跟着小编一起来学习吧!
当存储过程可以返回多个Linq结果集形状时,返回类型无法强类型化为单个投影形状。尽管 LINQ to SQL 可以生成所有可能的投影类型,但它无法获知将以何种顺序返回它们。 ResultTypeAttribute 属性适用于返回多个结果类型的存储过程,用以指定该过程可以返回的类型的集合。
在下面的 SQL 代码示例中,Linq结果集形状取决于输入(param1 = 1或param1 = 2)。我们不知道先返回哪个投影。
ALTER PROCEDURE [dbo].[SingleRowset_MultiShape] -- Add the parameters for the stored procedure here (@param1 int ) AS BEGIN -- SET NOCOUNT ON added to prevent extra result sets from -- interfering with SELECT statements. SET NOCOUNT ON; if(@param1 = 1) SELECT * from Customers as c where c.Region = 'WA' else if (@param1 = 2) SELECT CustomerID, ContactName, CompanyName from Customers as c where c.Region = 'WA' END
拖到O/R设计器内,它自动生成了以下代码段:
[Function(Name="dbo.[Whole Or Partial Customers Set]")] public ISingleResultWhole_Or_Partial_Customers_Set([Parameter(DbType="Int")] System.Nullable param1) { IExecuteResult result = this.ExecuteMethodCall(this, ((MethodInfo)(MethodInfo.GetCurrentMethod())), param1); return ((ISingleResult ) (result.ReturnValue)); }
但是,VS2008会把多结果集存储过程识别为单结果集的存储过程,默认生成的代码我们要手动修改一下,要求返回多个结果集,像这样:
[Function(Name="dbo.[Whole Or Partial Customers Set]")] [ResultType(typeof(WholeCustomersSetResult))] [ResultType(typeof(PartialCustomersSetResult))] public IMultipleResults Whole_Or_Partial_Customers_Set([Parameter (DbType="Int")] System.Nullableparam1) { IExecuteResult result = this.ExecuteMethodCall(this, ((MethodInfo)(MethodInfo.GetCurrentMethod())), param1); return ((IMultipleResults)(result.ReturnValue)); }
我们分别定义了两个分部类,用于指定返回的类型。这样就可以使用了,下面代码直接调用,分别返回各自的结果集合。
//返回全部Customer结果集 IMultipleResults result = db.Whole_Or_Partial_Customers_Set(1); IEnumerableshape1 = result.GetResult (); foreach (WholeCustomersSetResult compName in shape1) { Console.WriteLine(compName.CompanyName); } //返回部分Customer结果集 result = db.Whole_Or_Partial_Customers_Set(2); IEnumerable shape2 = result.GetResult (); foreach (PartialCustomersSetResult con in shape2) { Console.WriteLine(con.ContactName); }
语句描述:这个实例使用存储过程返回"WA"地区中的一组客户。返回的Linq结果集形状取决于传入的参数。如果参数等于 1,则返回所有客户属性。如果参数等于2,则返回ContactName属性。
到此,关于"Linq结果集形状怎么实现"的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注网站,小编会继续努力为大家带来更多实用的文章!
结果
形状
类型
过程
存储
代码
学习
参数
多个
属性
投影
生成
取决于
客户
更多
帮助
实用
接下来
两个
单个
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
管理系统数据库安全
网络安全主题推荐
网络安全的具体表现
惠普服务器驱动
独立站购买域名后需要租服务器吗
长沙企业软件开发大概多少钱
地理信息数据库招聘
v2免流服务器俄罗斯节点
给数据库加密
软件开发买苹果笔记本
数据库date类型导出
网络安全法 高校
网络安全 典型经验材料
中国网络安全大赛最强俱乐部
j2ee 数据库改
服务器ip怎么查电话号
吃鸡游戏服务器配置要求
淘宝商品数据库系统的设计
网络安全心理健康主题班会
家庭网络安全性选哪个
汕头网络安全服务店
什么数据库支持mdd文件
卫生系统网络安全宣传活动
数据库提供服务的例子
服务器需要加固态吗
怎么编辑代理服务器
数据库系统原理
服务器数据库注册
360城市网络安全
怎么用数据库