首页
学习
活动
专区
圈层
工具
发布
    • 综合排序
    • 最热优先
    • 最新优先
    时间不限
  • 来自专栏Vue技术实践

    IEnumerable和IQueryable区分

    LINQ查询方法一共提供了两种扩展方法,在System.Linq命名空间下,有两个静态类:Enumerable类,它针对继承了IEnumerable<T>接口的集合进行扩展;Queryable类,针对继承了IQueryable 我们会发现接口IQueryable<T>实际也是继承了IEnumerable<T>接口的,既然这样微软为什么要设计出两套扩展方法呢? 那么,到底什么时候使用IQueryable<T>,什么时候使用IEnumerable<T>? orders) { Console.WriteLine("OrderId:" + order.OrderID); } } 通过vs的Intellisense我们可以看到Where的返回类型为IQueryable 现在我们应该知道何时使用IEnumerable<T>,何时使用Iqueryable<T>。

    1.3K20发布于 2019-09-11
  • 来自专栏菩提树下的杨过

    IQueryable与foreach的困惑?

    IQueryable<Product> query = db.Products; foreach (string keyword in keywords) { string temp = keyword ;     query = query.Where(p => p.Description.Contains(temp)); } 与 IQueryable<Product> query = db.Products 有幸在msn群里得到老赵的提点,原因如下: IQueryable查询时,实际上是构建一个Expression Tree(表达式树),如果使用foreach迭代变量时,表达式树实际上得到的只是迭代变量的一个引用

    1.2K70发布于 2018-01-22
  • 来自专栏Vue技术实践

    (转载)IQueryable和IEnumerable

    下面内容摘自上面第4篇博客,非本人原创: 那么什么时候用IQueryable,什么时候用IEnumerable? (每次在执行where查询操作符的时候IQueryProvider会为我们创建一个新的IQueryable,调用AsEnumerable()方法的时候并不会去实际取值,只是 得到了一个IEnumerable (解析表达式,然后执行取得结果)) 这就是IQueryable的延迟加载把. .知识点总结   (1) 解决查询多次的问题,因IQueryable延迟加载,当用到集合的时候,provider会解析表达式

    69730发布于 2019-09-11
  • 来自专栏Vue技术实践

    IQueryable与IEnumberable的区别

    也就是说:实现了此接口的object,就可以直接使用foreach遍历此object; IQueryable 接口 它继承 IEnumerable 接口,而因为.net版本加入Linq和IQueryable using (SchoolDBEntities schoolEntities = new SchoolDBEntities()) { //查询的结果放入IQueryable 接口的集合中 IQueryable<T_Class> classesIQue = (from c in schoolEntities.T_Class 第一种:直接返回 IQueryable类型的查询,如下图所示: ? 第二种:在用分页查询之前先将其转换成 IEnumerable实际执行的sql如下图所示: ? 总结 IQueryable接口与IEnumberable接口的区别: IEnumerable<T> 泛型类在调用自己的SKip 和 Take 等扩展方法之前数据就已经加载在本地内存里了,而IQueryable

    85310发布于 2019-09-11
  • 来自专栏DotNet 致知

    C#内建接口:IQueryable

    这节来讲一下C#中的内建接口:IQueryableIQueryable是 IEnumerable 接口的子接口,相比之下提供了更丰富的查询功能。 一 IQueryable特点 延迟查询执行:IQueryable 接口支持延迟查询执行的特性。 强类型查询:IQueryable 接口允许我们使用强类型的查询表达式,利用编译器的类型检查来捕获错误和提供智能感知。 查询提供者:IQueryable 接口依赖于查询提供者(Query Provider),它是实际执行查询的组件。 通过利用 IQueryable 接口,我们可以以一种类型安全且灵活的方式对数据源进行查询和操作。

    81610编辑于 2023-09-08
  • 来自专栏跟着阿笨一起玩NET

    IQueryable简单分页的扩展方法

    IQueryable简单分页的扩展方法 ,废话不多说,直接上干货! cancellationToken"></param> public static async Task<Page<T>> ToPagedListAsync<T>( this IQueryable pageIndex, pageSize, count); } public static Page<T> ToPagedList<T>( this IQueryable

    99230编辑于 2022-03-09
  • 来自专栏老马寒门IT

    Entity Framework快速入门--IQueryable与IEnumberable的区别

    也就是说:实现了此接口的object,就可以直接使用foreach遍历此object; IQueryable 接口 它继承 IEnumerable 接口,而因为.net版本加入Linq和IQueryable using (SchoolDBEntities schoolEntities = new SchoolDBEntities()) { //查询的结果放入IQueryable 接口的集合中 IQueryable<T_Class> classesIQue = (from c in schoolEntities.T_Class 第一种:直接返回 IQueryable类型的查询,如下图所示: 第二种:在用分页查询之前先将其转换成 IEnumerable实际执行的sql如下图所示: 总结 IQueryable接口与IEnumberable 接口的区别:  IEnumerable<T> 泛型类在调用自己的SKip 和 Take 等扩展方法之前数据就已经加载在本地内存里了,而IQueryable<T> 是将Skip ,take 这些方法表达式翻译成

    74850编辑于 2022-05-10
  • 来自专栏风口上的猪的文章

    .NET面试题系列 - LINQ to SQL与IQueryable

    IQueryable 理解IQueryable的最简单方式就是,把它看作一个查询,在执行的时候,将会生成结果序列。 IQueryable是一个继承了IEnumerable接口的另一个接口。 Queryable是一个静态类型,它集合了许多扩展方法,扩展的目标是IQueryable和IEnumerable。它令IQueryable和IEnumerable一样,拥有强大的查询能力。 实现IQueryable<T> 首先我们自建一个类别FrankQueryable,继承IQueryable<T>。 IQueryable与 IEnumerable的异同? 首先IQueryable<T>是解析一棵树,IEnumerable<T>则是使用委托。 IQueryable总结 理解IQueryable的最简单方式就是,把它看作一个查询,在执行的时候,将会生成结果序列。

    2.2K10发布于 2018-09-14
  • 来自专栏王清培的专栏

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

    IQueryable<T>接口貌似是一个对象,但是它们都属于一个完整的IQueryable<T>中的一员。N层对象体现在哪里? IQueryable具备延迟加载的能力。 5】.IQueryable<T>与IQueryProvider一对一的关系能否改成一对多的关系 IQueryable对象都有一个配套的IQueryProvider对象,在频繁的创建IQueryable的时候都会重新创建 我们可以适当的修改实现IQueryable类的内部结构,让每次创建IQueryable之后能重用上一次的IQueryProvider的对象,毕竟IQueryProvider对象没有任何的中间状态的数据, ORM一直是我们比较喜欢去写的框架,这里就使用自定义的IQueryable来查询相应的对象实体。首先我们需要继承IQueryable<T>接口来让LINQ能查询我们自己的数据上下文。

    1.5K30发布于 2019-03-01
  • 来自专栏王清培的专栏

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

    IQueryable<T>接口是Linq to Provider的入口,非常有意思的是它并不是一个IQueryable<T>来支撑一次查询。 我们来分析一下IQueryable<T>接口的代码。 这幅图重点是IQueryable<T>对象的连续操作,大致原理是每次执行扩展方法的时候都会构造一个新的IQueryable<T>,本次的IQueryable<T>对象将包含上次执行的表达式树,以此类推就形成了一颗庞大的表达式树 我们直接用源码进行讲解吧; public static IQueryable<TResult> Select<TSource, TResult>(this IQueryable<TSource> source 3.4】.链式查询方法的设计误区(重点:一次执行程序多次处理) 在使用IQueryable<T>时,我们尝试分析源码,看看IQueryable内部使用原理来帮我们生成表达式树数据的,我们顺其自然的看到了

    2.1K11发布于 2019-03-01
  • 来自专栏葡萄城控件技术团队

    最全数据结构详述: List VS IEnumerable VS IQueryable VS ICollection VS IDictionary

    本文对常用的数据结构详述:Array, ArrayList,List,IList,ICollection, Stack, Queue, HashTable, Dictionary, IQueryable IQueryable与IEnumberable不同的是,当从服务器端加载过量的数据,IQueryable会自动减少应用负载。 IQueryable可保证大数据量时应用程序的高性能。 IQueryable会先过滤数据,然后发送给客户端。 ? 18:   19: IQueryable<employee> queryIQueryable=null; 20: 21: //Bring 生成 IQueryable : SELECT [Extent1].[ID] AS [ID], [Extent1].[Name] AS [Name], [Extent1].

    2.3K80发布于 2018-01-10
  • 来自专栏谭广健的专栏

    学了这一招,爷爷再也不用担心动态排序了

    public static class MyTools { public static IQueryable<TSource> MyOrderBy<TSource>(this IQueryable <TSource> result = (IQueryable<TSource>)mothed.Invoke(null, new object[] { source, sort }); <TSource> DealAsc<TSource, M>(this IQueryable<TSource> source, string sort) { //生成 <TSource> DealDesc<TSource, M>(this IQueryable<TSource> source, string sort) { // 表达式 /// static Expression<Func<TSource, M>> CreateLamdba<TSource, M>(this IQueryable

    66930发布于 2020-06-28
  • 来自专栏c#Winform自定义控件系列

    T4生成整理

    列表 /// /// <returns>IQueryable列表</returns> public virtual IQueryable <<#=tableName #>> IQueryable() { return base.IQueryable(); } /// ">表达式</param> /// <returns>IQueryable列表</returns> public virtual IQueryable<<#=tableName <Sys_Role> IQueryable() { return base.IQueryable(); } ///

    /// <returns>IQueryable列表</returns> public virtual IQueryable<Sys_Role> IQueryable(

    1.1K30发布于 2019-09-11
  • 来自专栏me的随笔

    .NET中数据访问方式(一):LINQ

    IQueryable<out T>继承自IEnumerable<T>,是个标记接口。 NET也提供了几个对IEnumerable和IQueryable接口进行操作的扩展方法,如: Cast<TResult>和OfType<TResult>。 两个接口 在LINQ中,一个查询表达式被编译为表达式树或者委托,查询结果为IEnumerable<T>类型则被编译为委托,查询结果是IQueryableIQueryable<T>类型则被编译为表达式树 System.Linq.IQueryable<T> 在执行查询操作时,IQueryable先在服务器端进行过滤操作(如果有的话),然后再将数据放到本地内存中。 IQueryable适合使用对进程外(如数据库)的数据进行查询操作,如:LINQ to Entities。

    3.7K30发布于 2018-09-05
  • 来自专栏DotNet NB && CloudNative

    .NET 表达式树

    IQueryable/IQueryable 和表达式树 IQueryable有两个组件 Expression:当前查询的组件的与语言和数据源无关的表示形式,以表达式树的形式表示。 达式树是不可变的;如果需要不同的表达式树并因此需要不同的查询,则需要将现有表达式树转换为新的表达式树,从而转换为新的 IQueryable

    50140编辑于 2023-08-30
  • 来自专栏站长的编程笔记

    .NET 2.0运行时的LINQ

    .: 没人提到LINQBridge是很奇怪的.这个小巧的项目是LINQ(IEnumerable,但没有IQueryable)及其依赖(Func,Action等)到.NET 2.0的后端.和: 如果您的项目在编译期间引用 LINQ to SQL和LINQ到实体需要许多新的类(DataContext/ ObjectContext,大量的属性,EntitySet,EntityRef,Link,IQueryable,等)和表达式树 dim q = xs.where(function(x) x > 2).select(function(x) x * 4); 对于3.5框架附带的LINQ功能,这些方法在IEnumerable或IQueryable <extension()> public function Select(of T, R)(source as IQueryable<t>, transform as Expression(of Func (of T, R))     'build a composite IQueryable that contains the expression tree for the transformation

    1.3K10编辑于 2023-12-05
  • 来自专栏跟着阿笨一起玩NET

    linq to sql 扩展方法

    /// <returns></returns> public static List<T> ExecuteQuery<T>(this DataContext dataContext, IQueryable /// <returns></returns> public static List<T> ExecuteQuery<T>(this DataContext dataContext, IQueryable /// <returns></returns> private static SqlCommand GetCommand(this DataContext dataContext, IQueryable /// <returns></returns> public static List<T> ExecuteQuery<T>(this DataContext dataContext, IQueryable /// <returns></returns> public static List<T> ExecuteQuery<T>(this DataContext dataContext, IQueryable

    1.1K00发布于 2018-09-19
  • 来自专栏SpiritLing

    Asp.Net Core 扩展 Linq,简化自定义

    </param> /// <returns></returns> public static IOrderedQueryable<T> OrderBy<T>(this IQueryable </param> /// <returns></returns> public static IOrderedQueryable<T> OrderBy<T>(this IQueryable </param> /// <returns></returns> public static IOrderedQueryable<T> OrderBy<T>(this IQueryable (ToLambdaWhere<T>(propertyName, content)); } public static IQueryable<T> WhereList<T>(this IQueryable <T>, IQueryable<T>> UseCoditionFind<T>(this IQueryable<T> source, CoditionEntity coditionEntity)

    2.2K10发布于 2021-03-16
  • 来自专栏张善友的专栏

    LINQ to SQL集成到应用程序中需考虑的一些问题

    1、LINQ to SQL集成到应用程序中需考虑的一个问题, 到底应该返回IQueryable<T>还是IQueryable? 0; Scale = 0) [, ] DLINQ生成的SQL语句是利用TOP和嵌套子查询, 这种方法已经被证明是比较高效的做法(相比于临时表的做法), 所以完全有理由可以一试.到这里, List, IQueryable , IQueryable都没有任何问题. 3、需要一个动态排序功能, 这里List的局限性出来了, 传统的做法可能需要用一个dynamic参数来传递需要排序的列然后到SP当中来执行, 但我们已经不打算使用 但是IQueryable不能跨assembly, 一旦跨了assembly的话, 你无法使用var来引用匿名类里面的property, 绑定到control是没有问题的, 但是客户端的动态查询却成了问题 那么选择IQueryable<T>, 我们选择返回IQueryable<T>给客户端, 分页/排序都没有任何问题.

    1.7K60发布于 2018-01-19
  • 来自专栏ASP.NET MVC5 后台权限管理系统

    ASP.NET MVC5+EF6+EasyUI 后台管理系统(17)-LinQ动态排序

    /// <param name="sortDirection"></param> /// <returns></returns> public static IQueryable <T> DataSorting<T>(IQueryable<T> source, string sortExpression, string sortDirection) { <T> DataPaging<T>(IQueryable<T> source, int pageNumber, int pageSize) { if (pageNumber <T> SortingAndPaging<T>(IQueryable<T> source, string sortExpression, string sortDirection, int pageNumber source.Expression, Expression.Lambda(Expression.Property(param, sortExpression), param)); 生成排序表达式   IQueryable

    1K50发布于 2018-01-16
领券