首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

.NET深入解析LINQ框架(四:IQueryable、IQueryProvider接口详解)

我假设使用List来保存一批订单的信息,但是根据业务逻辑需要我们要通过提供一套独立的扩展方法来支持对订单集合数据的处理。这一套独立的扩展方法会跟随着当前系统部署,不作为公共的开发框架的一部分。...IQueryable并非IEnumerable对象,无法实时的做出处理然后将结果返回给下一个方法接着执行。那么它如何将片段性的执行方法串成一个整的、完整的查询?...很多场合下我们需要自己去构建延迟加载特性的功能,在IEnumerable对象中构建延迟基本上是通过yield return 去构建一个状态机,当进行迭代的时候才进行数据的返回操作。...} 这是IQueryable接口中从IEnumerable继承下来的两个返回IEnumerator接口类型的方法,在我们目前使用的Linq to Sql、Linq to Entity中都会返回强类型的集合对象...方法的返回类型也是IQueryable类型,返回类型和扩展类型相同就已经构成链式编程的最小环路。

1.4K11
您找到你想要的搜索结果了吗?
是的
没有找到

BI如何实现用户身份集成自定义安全程序开发

用户账号是用户身份的一种表示,传统统一身份认证系统往往被作为外围系统来集成各个应用系统,而不是作为核心基础系统被其他应用系统来集成。...因此,这就涉及到我们如何将一套账号应用到各个系统中,保证账号的权限体系。 常见方法: 1、(最简单但最深恶痛绝的)数据复制一份导入到每一套系统中。...GenerateTokenAsync 判断给定的用户名和密码是否有效,如果有效,返回一个唯一的token;否则返回null或空字符串。...注意 在每个接口的实现函数中,必须有try-catch异常处理,在catch的异常处理部分,不要用throw语句再次抛出异常,而应返回Task对象,例如:return Task.FromResult(null...); 其中T为接口函数规定的某个类型。

53330

让我们一起写出更有效的CSharp代码吧,少年们!

= null) resource.Dispose(); } } 通过委托在类型参数上定义方法约束 Public static T Add(T left, T right, Func...right : left } 推荐使用泛型的Tuple作为输出和引用参数 当设置方法的返回值,或者在需要使用ref参数的情形时,使用Tuple元组可以使代码更清晰,当然如果参数比较复杂,还是选择建立对应的...; } 根据请求生成序列 [IEnumerable].TakeWhile(num => num < 5); 通过Function参数解耦 Public static T Sum(IEnumerable...IEnumerable对象,因而如果实际的返回值为IQueryable对象,那么不要经行相关的转化,当然也可以通过typeA as IQueryable来尝试转化,如果本来就是IQueryable对象则直接返回...,这样API参数在不存在或者提供null值时也不会报错。

1K50

yield在WCF中的错误使用——99%的开发人员都有可能犯的错误

在定义API的时候,对于一些返回集合对象的方法,很多人喜欢将返回类型定义成IEnumerable,这本没有什么问题。...这里要说的是另一个问题:对于返回类型为IEnumerable的方法来说,我们可以使用yield return的方式来输出返回集合的元素。...我们定义了如下一个IDemoService接口作为服务契约,唯一的方法GetItems返回一个类型为IEnumerable对象,并且具有唯一字符串参数category。... GetItems(string category); 6: } 下面是实现了该契约接口的DemoService的实现:GetItems方法返回一个包含3个字符串的集合,但是在返回之前我们需要对参数实施验证...如果category参数提供的字符串为Null或者是空字符串,抛出一个FaultException异常并提示“Invalid Category”,这样客户端在输入不合法参数的情况下可以得到错误消息。

1.2K90

C#泛型方法解析

一.泛型的基本特性概述:     在实际项目开发中,任何API只要将object作为参数类型和返回类型使用,就可能在某个时候涉及强类型转换。...[ComVisible(false)] public class SynchronizedCollection : IList, ICollection, IEnumerable public KeyedByTypeCollection(IEnumerable items); /// /// 返回集合中第一个具有指定类型的项...如果集合中不包含类型 的对象,则返回类型的默认值:如果是引用类型,默认值为 null;如果是值类型,默认值为 0。...类型参数可以作为方法的参数,作为方法的返回值,或者作为方法内部定义的一个局部变量来使用。CLR允许一个方法指定它独有的类型参数,这些类型参数可用于参数、返回值、或者局部变量。

3.3K90

.NET面试题系列 - 泛型

为泛型变量设置默认值时常使用default关键字进行:T temp = default(T)。如果T为引用类型,则temp为null,如果T为值类型,则temp为0。...协变和逆变 可变性是以一种类型安全的方式,将一个对象作为另一个对象来使用。其对应的术语则是不变性(invariant)。 可变性 可变性是以一种类型安全的方式,将一个对象作为另一个对象来使用。...例如对普通继承中的可变性:若某方法声明返回类型为Stream,在实现时可以返回一个MemoryStream。可变性有两种类型:协变和逆变。...People不能返回Teacher。...IEnumerable支持协变性 IEnumerable支持协变性,它允许一个类似下面签名 void 方法(IEnumerable anIEnumberable) 的方法,该方法传入更具体的类型

68730
领券