• IEnumerable笔记


    C#中的IEnumerable接口深入研究【转】

    里面有几句要点:

    C#和VB.NET中的LINQ提供了一种与SQL查询类似的“对象查询”语言
    对于熟悉SQL语言的人来说除了可以提供类似关联、分组查询的功能外,
    还能获取编译时检查和Intellisense的支持,使用Entity Framework更是能够自动为对象实体的查询生成SQL语句,所以很受大中型信息系统设计者的青睐。 IEnumerable这个接口可以说是为了这个特性(LINQ)量身定制”,再加上微软提供的扩展(Extension)方法和Lambda表达式,给开发者带来了无穷的便利。本人在最近的开发工作中使用了大量的这种特性,同时在调试过程中还遇到了一个小问题,那么正好趁此机会好好研究一下相关原理和实现。 先从一个现实的例子开始吧。假如我们要做一个商品检索功能(这只是一个例子,我当然不可能把公司的产品也业务在这里贴出来),
    其中有一个检索条件是可以指定厂家的名称并进行模糊匹配。厂家的包括两个名称:注册名称和一般性名称,我们只按一般性名称进行检索。当然你可以说直接用SQL查询就行了,
    但是我们的系统是以实体对象为核心进行设计的,厂家的数量也不会太多,大概1000条。为了不增加系统的复杂性,只考虑使用现有的数据访问层接口进行实现(按过滤条件获取商品,以及获取所有厂商),这时LINQ的便捷性就体现出来了。 借助IEnumerable接口和其辅助类,我们可以写出以下代码

    IEnumerable的几个简单用法

    一看到IEnumerable这个接口,我们可能会觉得很神奇,在一般的编程时,基本上我们是想不到去用它的,可是,俗话说得好,存在便是道理,那么,它对我们来说,能够带来哪些奇妙的事情呢?
    要想弄懂它,我们还是看看其定义吧!
    在MSDN上,是这么说的,它是一个公开枚举数,该枚举数支持非泛型集合上进行简单的迭代
    换句话说,对于所有数组的遍历,都来自IEnumerable,那么我们就可以利用这个特性,来定义一个能够遍历数组的通用方法,这样看来,是不是很神奇呢? 例如:
    public static void Print(IEnumerable myList) { int i = 0; foreach (Object obj in myList) { if (obj is Student)//这个是类型的判断,这里Student是一个类或结构 { Student s=(Student)obj; Console.WriteLine(" [{0}]: {1}", i++, s.Sname); } if (obj is int) { Console.WriteLine("INT:{0}",obj); } } Console.WriteLine(); } 上面,我们可以在foreach中进行多个if判断,来进行相应的操作。 IEnumerable 的另一个用法是在泛型中的使用其中用lamda表达式在数组中查询,具体例子如下: List<string> fruits =new List<string> { "apple", "passionfruit", "banana", "mango","orange", "blueberry", "grape", "strawberry" }; //List<string> query = fruits.Where(fruit => fruit.Length < 6).ToList(); IEnumerable<string> query = fruits.Where(fruit => fruit.Length < 6); foreach (string fruit in query) Console.WriteLine(fruit); 以上的两个例子呢,我觉得在平时编程中,还是会经常用到的,我们不妨试试。。。
    IEnumerable<Echubso> list = _omshubdata.Echubso.Where(p => p.Whse == whse).ToList();
    foreach (var item in list)
    {
        var json = item.Json;
    }
  • 相关阅读:
    MySQL多实例配置
    MySQL8.0启动和关闭流程
    MySQL8.0初始化配置方式 ——维护使用
    MySQL多种连接方式
    MySQL 8.0用户及安全管理
    MySQL 5.7安装及版本升级到8.0
    五十六、linux 编程——UDP 编程模型
    五十五、linux 编程——TCP 连接和关闭过程及服务器的并发处理
    五十四、linux 编程——TCP 编程模型
    五十三、linux 编程——TCP 编程基本介绍
  • 原文地址:https://www.cnblogs.com/ZkbFighting/p/13272151.html
Copyright © 2020-2023  润新知