C#中遍历各类数据集合的方法总结: 
1.枚举类型

//遍历枚举类型Sample的各个枚举名称
foreach (string sp in Enum.GetNames(typeof(Sample)))
{
ary.Add(sp);
}
//遍历枚举类型Sample的各个枚举值
foreach (string sp in Enum.GetValues(typeof(Sample)))
{
ary.Add(sp);
}

2.遍历ArrayList(Queue、Stack) 
这里以string为例,当然ArrayList中的元素可以是任何数据类型,遍历时须确认ArrayList中的元素都是同一数据类型。

//遍历元素为string类型的队列
foreach (string text in arraylist)
{
ary.Add(text);
}

此外遍历Queue队列和Stack堆栈的方式与ArrayList基本相同, 都可以使用foreach来循环遍历,只不过一个是先进先出另一个是先进后出罢了。

ArrayList list = new ArrayList();
//for遍历
for (int i = ; i < list.Count; i++)
{
SE se = (SE)list[i];
Console.WriteLine(se.Name);
}
//foreach遍历
foreach (Object obj in list)
{
SE se = (SE)list[i];
Console.WriteLine(se.Name);
}

3.Winform窗体中的控件

//遍历寻找主窗体中的控件,并将符合条件的控件从窗体上去除
foreach (Control ctl in this.Controls)
{
//获取并判断控件类型或控件名称
if (ctl.GetType().Name.Equals("ListBox") || ctl.Name.Equals("listBox1"))
this.Controls.Remove(ctl);
}

4.HashTable哈希表 
DictionaryEntry类需要引用System.Collections

//遍历完整哈希表中的键和值
foreach (DictionaryEntry item in hashTable)
{
ary.Add("哈希键:"+item.Key+",哈希值:"+item.Value.ToString());
}
此外还可以单独遍历哈希表中的键或值。
//只遍历哈希表中的键
foreach (string key in hashTable.Keys)
{
ary.Add("哈希键:" + key);
}
//只遍历哈希表中的值
foreach (string value in hashTable.Values)
{
ary.Add("哈希值:" + value);
}

5.遍历DataSet和DataTable中的行和列

//遍历DataSet中的表
foreach (DataTable dt in dataSet.Tables)
{
ary.Add("表名:" + dt.TableName.ToString());
}
//遍历DataSet中默认第一个表中的行
foreach (DataRow dr in dataSet.Tables[].Rows)
{
//获取行中某个字段(列)的数据
ary.Add(dr["ID"].ToString());
}
//遍历DataSet中默认第一个表中的列
foreach (DataColumn col in dataSet.Tables[].Columns)
{
ary.Add("列名:"+col.ColumnName);
}

DataTable遍历行和列的方法和DataSet类似,只是将dataSet.Tables[0]换成具体某张表就可以了。 
另外还可以对DataTable表进行SQL查询,然后再对查询结果进行遍历。

//遍历DataSet中表SELECT执行查询条件后的结果
foreach (DataRow dr in dataSet.Tables[].Select(" MONTH>6 AND MONTH<12 "))
{
//获取行中某个字段(列)的数据
ary.Add(dr["ID"].ToString());
}

6.遍历DataGridView中的行

//遍历DataGridView中的行
foreach (DataGridViewRow dr in dataGridView1.Rows)
{
//获取行中某个字段(列)的数据
ary.Add(dr.Cells["ID"].ToString());
}

7.遍历ListBOX和ComboBox中的item 
一般foreach遍历只能遍历到ListBOX和ComboBox里item的名称,完整遍历需要在绑定item的时候添加的item数据是个二元属性自定义类的对象,将对象中一个属性的名称作为DisplayMember(item名),另一个作为DisplayValue(item值)。这样在遍历的时候就可以把ListBOX和ComboBox中的item的名称和值全部获取出来了。

8.List<T>

//for遍历
for (int i = ; i < list.Count; i++)
{
//遍历时不需要类型转换
Console.WriteLine(list[i]);
}
//foreach遍历
foreach (SE obj in list)
{
//遍历时不需要类型转换
Console.WriteLine(obj);
}

9.Dictionary<K,V>

//遍历Values
foreach (SE se in list.Values)
{
//遍历时不需要类型转换
Console.WriteLine(se);
} //同时遍历
foreach (KeyValuePair<string, SE> en in list)
{
Console.WriteLine(en.Key);
Console.WriteLine(en.Value.Name);
}
//KeyValuePair<TKey,TValue>是一个泛型结构

C#中遍历各类数据集合的方法总结的更多相关文章

  1. 【.NET】C#中遍历各类数据集合的方法

    [.NET]C#中遍历各类数据集合的方法   C#中遍历各类数据集合的方法,这里自己做下总结: 1.枚举类型             //遍历枚举类型Sample的各个枚举名称             ...

  2. c#中遍历各种数据集合的方法

    1.遍历枚举类型 补:typeof()方法中只能传具体的类名.类型名称(int32...),不可以是变量名称.类似的方法有GetType(),GteType()方法继承自object,所以c#中任何对 ...

  3. java中遍历map对象的多种方法

    在Java中如何遍历Map对象   How to Iterate Over a Map in Java 在java中遍历Map有不少的方法.我们看一下最常用的方法及其优缺点. 既然java中的所有ma ...

  4. JMeter 中对于Json数据的处理方法

    JMeter中对于Json数据的处理方法 http://eclipsesource.com/blogs/2014/06/12/parsing-json-responses-with-jmeter/ J ...

  5. Java中遍历map的四种方法 - 转载

    在Java中如何遍历Map对象 How to Iterate Over a Map in Java 在java中遍历Map有不少的方法.我们看一下最常用的方法及其优缺点. 既然java中的所有map都 ...

  6. python中遍历文件的3个方法

    转自: http://www.jb51.net/article/54640.htm 用python进行文件遍历有多种方法,这里列举并说明一下. os.path.walk() 这是一个传统的用法. wa ...

  7. JMeter中返回Json数据的处理方法

    Json 作为一种数据交换格式在网络开发,特别是 Ajax 与 Restful 架构中应用的越来越广泛.而 Apache 的 JMeter 也是较受欢迎的压力测试工具之一,但是它本身没有提供对于 Js ...

  8. 【jmeter】JMeter中返回Json数据的处理方法

    Json 作为一种数据交换格式在网络开发,特别是 Ajax 与 Restful 架构中应用的越来越广泛.而 Apache 的 JMeter 也是较受欢迎的压力测试工具之一,但是它本身没有提供对于 Js ...

  9. Java中遍历Map的几种方法

      转自: http://blog.csdn.net/wzb56/article/details/7864911 方法分为两类: 一类是基于map的Entry:map.entrySet(); 一类是基 ...

随机推荐

  1. 浅析parseInt与parseFloat的区别

    parsetInt与parseFloat的区别还是很大的,简单来说,parseInt解析字符串为整数,parseFloat解析字符串为小数. 首先说parseInt() 1.可以接受两个参数,第一个为 ...

  2. BZOJ2958 序列染色

    果然清华集训的题目...显然的DP题但是不会做... 我们令f[i][j][w]表示状态方程 w表示到了字符串的第w个 i = 0, 1, 2分别表示k个B和k个W都没填上.k个B填上了k个W没填上. ...

  3. bzoj1225

    题解: 数论+报搜 首先套一个计算因子个数的公式 枚举一下这个数 代码: #include<bits/stdc++.h> using namespace std; ],res[],tmp[ ...

  4. 流程设计器jQuery + svg/vml(Demo1 - 构建设计器UI界面)

    之前用Silverlight实现过一个流程设计器(Demo),使用起来不是很方便.打算参考GooFlow,结合自己对工作流的理解,用jQuery改造实现一个,力求简单实用. 第一步是要构建设计器的UI ...

  5. L175 Endorestiform Nucleus: Scientist Just Discovered a New Part of the Human Brain

    The newly named Endorestiform Nucleus sits in the inferior cerebellar小脑 peduncle, at the junction be ...

  6. New Concept English Two 7

    $课文14 你会讲英语吗? 133. I had an amusing experience last year. 去年我有过一次有趣的经历. 134. After I had left a smal ...

  7. SSH整合报错:Unable to instantiate Action, testAction, defined for 'test' in namespace '/'testAction

    报错如下: Struts Problem Report Struts has detected an unhandled exception: Messages: testAction Unable ...

  8. gulp-css-spriter 将css代码中的切片图片合并成雪碧图

    NPM地址:https://www.npmjs.com/package/gulp-css-spriter/ 配置gulpfile.js: var gulp = require('gulp'),     ...

  9. 此文记录了我从研二下学期到研三上学期的找工历程,包括百度、腾讯、网易、移动、电信、华为、中兴、IBM八家企业的面试总结和心得--转

    感谢电子通讯工程的研究生学长为大家整理了这么全面的求职总结,希望进入通信公司和互联网公司做非技术类岗位的学弟学妹们千万不要错过哦~ ---------------------------原文分割线-- ...

  10. VMware上安装CenterOS

    1.环境:Win10.VMware Workstation 12.Centeros 7 2.VMware workstation12安装 双击“VMware_workstation_full_12.5 ...