zoukankan      html  css  js  c++  java
  • IQueryable 和 IEnumable

    IQueryable 和 IEnumable

    2018年04月11日 15:27:07 qgbooooo 阅读数 526更多

    分类专栏: C# 底层

    版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。

    本文链接:https://blog.csdn.net/qqqgg/article/details/79896859

    public class student { 
    public string Name { get; set; } 
    public int Id { get; set; } }
    
    var st = new List<student>();
    
    var result= st.Where(t=>t.Id>2);

    这里的result 是IEnumable<student>。

    执行这个where 不会耗时间,因为这里不执行实际的操作,只是把这个 lamda表达式封装了一层,封装为一个委托,待以后foraech 的时候使用。

    这个无法拼接。如果不改变上面的代码,不能在这个之后,把 st.Where(t=>t.name.Length>2); 也拼进去。

    只能在foreach 的时候处理了。

    -----------------------------------------------------------------------------------------------------------------------

    using (var context = new MonitorDBContext("Server=DESKTOP-H32IVT0\\SQLEXPRESS;uid=sa;pwd=---;Database=MonitorDB;")) {
        context.Users.Add(new User { Name="老王",Email="qqqq@qq.com"});
        context.SaveChanges();
        var users = context.Users.Where(t=>t.Id>2);
        Console.WriteLine("{0,6} {1,5} {2,20}", "ID", "Name", "Email");
        foreach (var user in users){
    		Console.WriteLine("{0,6} {1,5} {2,20}", user.Id, user.Name, user.Email);
    	}
        Console.ReadKey();
    
    }

    上面加红的代码 这个users 是 IQueryable<user> 类型的。这句的执行也是不耗时间的。
    这只是把这个lamda表达式封装了一层,封装为一个Expression.而不是一个委托。
    这个Expression可以拼装,在这句后,接着写 where , orderby等。

    IQueryable<T>类型,继承了IEnumable<T>,就是也可以foreach.他有四个属性,其中一个是IEnumable<T>的。
    另外的是IQueryable 的

     public interface IQueryable : IEnumerable
        {
            Expression Expression { get; }
            Type ElementType { get; }
            IQueryProvider Provider { get; }

        }

    可以调试状态看这几个到底什么值。

  • 相关阅读:
    蒙特卡洛法(随即取样法) 数模 笔记
    【数模学习】Matlab 符号微积分 计算微分、雅可比矩阵、不定积分与定积分、求解微分方程
    Length of Last Word
    基于视频深度学习的人物行为识别 资料汇总
    3S比赛预定
    求解一元多次方程 牛顿迭代法
    LeetCode | Climbing Stairs
    LeetCode | Palindrome Number
    LeetCode | Merge Sorted Array
    LeetCode | Valid Palindrome
  • 原文地址:https://www.cnblogs.com/grj001/p/12223981.html
Copyright © 2011-2022 走看看