咋一看到IEnumerable这个接口,我们可能会觉得很神奇,在一般的编程时,基本上我们是想不到去用它的,可是,俗话说得好,存在便是道理,那么,它对我们来说,能够带来哪些奇妙的事情呢?
要想弄懂它,我们还是看看其定义吧!
在MSDN上,是这么说的,它是一个公开枚举数,该枚举数支持在非泛型集合上进行简单的迭代。换句话说,对于所有数组的遍历,都来自IEnumerable,那么我们就可以利用这个特性,来定义一个能够遍历数组的通用方法,这样看来,是不是很神奇呢?
例如:

     public static void Print(IEnumerable myList)
{
int i = ;
foreach (Object obj in myList)
{
if (obj is Student)//这个是类型的判断,这里Student是一个类或结构
{
Student s=(Student)obj;
Console.WriteLine("\t[{0}]:\t{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", "orange", "banana" };
//去遍历
IEnumerable<string> query = fruits.Where(fruit => fruit.Length == );
foreach (var q in query)
{
Console.WriteLine(q);
}
Console.ReadLine();
有四个数据,int a=1,b=2,c=3,d=4,如何轮训他们 若有一个小于0 或大于10 就报警。
最笨的办法就是对一个一个if判断。求比较优的方法 
 private void button1_Click(object sender, EventArgs e)
{
double a= 11.0;
double b = 2.0;
double c = 0.1;
double d = 6.0; bool flag = Waring(a,b,c,d); }
static bool Waring(params double[] numbers)
{
if (numbers == null || numbers.Length == )
{
throw new ArgumentException();
}
return numbers.Any(i => i < || i > );
}

注意:IEnumerable的any和all 方法 。

any表示确定序列中的任何元素是否都满足条件,all表示确定序列中的所有元素是否都满足条件

举个栗子:

        List<string> fruits = new List<string>() { "apple", "banana", "orange" };
bool flag = fruits.All(i => { Console.WriteLine(i); return (i.Length > ); });

all时 将输出结果:apple banana orange

any时将输出结果:apple

因此 any当序列中有元素满足条件后,就不接下去判断了 直接出true

Any是只要有一个满足结果就是true,否则是false。
All是只要有一个不满足结果就是false,否则是true。

IEnumerable 遍历用法的更多相关文章

  1. MVC学习笔记--IEnumerable的用法

    IEnumerable的用法 IEnumerable和IEnumerable<T>接口在.NET中是非常重要的接口,它允许开发人员定义foreach语句功能的实现 并支持非泛型方法的简单的 ...

  2. IEnumerable的用法

    本文导读:IEnumerable和IEnumerable<T>接口在.NET中是非常重要的接口,它允许开发人员定义foreach语句功能的实现并支持非泛型方法的简单的迭代,IEnumera ...

  3. <s:iterator>各种遍历用法

    struts2<S:iterator>遍历map小结 1.MapAction.java import java.util.ArrayList;   import java.util.Has ...

  4. jQuery 遍历用法

    jQuery 遍历 DOM 树 parent() 方法返回被选元素的直接父元素(找爸爸). parents() 方法返回被选元素的所有祖先元素,它一路向上直到文档的根元素 (找长辈). parents ...

  5. Python os.walk文件遍历用法【转】

    python中os.walk是一个简单易用的文件.目录遍历器,可以帮助我们高效的处理文件.目录方面的事情. 1.载入 要使用os.walk,首先要载入该函数 可以使用以下两种方法 import os ...

  6. jquery中each()的三种遍历用法

    1.选择器+遍历 $('div').each(function (i){ i就是索引值 this 表示获取遍历每一个dom对象 }); 2.选择器+遍历 $('div').each(function  ...

  7. js ejs for语句的第二种遍历用法

    var A = {a:1,b:2,c:3,d:"hello world"}; for(var k in A) { console.log(k,A[k]); var h = new ...

  8. IEnumerable<T> 用法

    //以下参考来自 http://www.cnblogs.com/wilber2013/p/4299529.html

  9. MVC ---- IEnumerable<T>、List<T> 前台遍历展示

    突然做前台数据展示,发现IEnumerable 对一个列表的展示还是可以,但要是多个类型放在一个表中如何处理呢,如下: 一个类IEnumerable遍历 后台 public IEnumerable&l ...

随机推荐

  1. Web服务器之iis,apache,tomcat三者之间的比较

    IIS-Apache-Tomcat的区别 IIS与Tomcat的区别 IIS是微软公司的Web服务器.主要支持ASP语言环境. Tomcat是Java Servlet 2.2和JavaServer P ...

  2. 向jboss写入服务器日志

    实际开发中,记录日志是常用的功能,jboss默认情况下已经记录了很多运行日志,如果开发人员要手动在server.log中写入日志,可以参考下面的方法: package utils; import ja ...

  3. 2014-2015-2 《Java程序设计》课程学生博客列表

    20135101 曹钰晶 20135103 王海宁 20135104 刘 帅 20135105 王雪铖 20135109 高艺桐 20135111 李光豫 20135114 王朝宪 20135116 ...

  4. js的几种排序

    转载:http://www.jb51.net/article/81520.htm 一.冒泡排序 ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 ...

  5. 柯尔莫可洛夫-斯米洛夫检验(Kolmogorov–Smirnov test,K-S test)

    柯尔莫哥洛夫-斯米尔诺夫检验(Колмогоров-Смирнов检验)基于累计分布函数,用以检验两个经验分布是否不同或一个经验分布与另一个理想分布是否不同. 在进行cumulative probab ...

  6. 一次神奇的WCF的404错误解决

    现象:浏览器中可以访问元数据,但是运行的时候却报404的异常,说目标地址找不到. 折腾了一下午. 引用服务后config中的client的address是这样的http://host/aspx/Ser ...

  7. centos 20T硬盘(超过16T)分区

    最近新买了一台服务器DELL R730 首先我们做了一个raid 1 和raid 5 在raid 1 上安装系统 安装完系统之后,现在要进行分区了,那个raid 5 做完之后,实际大小是19T 所以这 ...

  8. PHP ElasticSearch的使用

    系统是Windows server 2003. ElasticSearch是一个基于Lucene的稳定的.分布式.RESTFul的搜索引擎.其实所谓的RestFul就是它提供URL供你调用(建立索引和 ...

  9. 【BZOJ 3242】【UOJ #126】【CodeVS 3047】【NOI 2013】快餐店

    http://www.lydsy.com/JudgeOnline/problem.php?id=3242 http://uoj.ac/problem/126 http://codevs.cn/prob ...

  10. 关于二叉排序树 BST

    #include<stdio.h> #include<stdlib.h> typedef struct node { double w; struct node *l,*r; ...