C# foreach的实现 foreach(new {Name=""} s in collection)

目的就是为了实现类似的写法

foreach(new {Name=String.Empty} Ele in (IEnumrable)Collection)

{

      // 要执行的操作...

}

 

适用场景... 

 var datas=from student in StudentCollection select  new{studentName=student.Name };

把datas存入ViewState中,若在一个方法内 则可以直接 foreach...

 

问题就出现在别的页面在此访问ViewState就无法使用foreach(var ele ...)了

 

具体请查看

http://topic.csdn.net/u/20100820/01/ef01ef42-8c67-4901-a039-5dcf0d0fdf00.html

 

最后看了大家的回答,自己思考后...实现了一个简单的方法...还是反射

 

用起来方便了,稍加改进效果应该还是不错的

 

第一步,声明一个类(相当于DataSourceTemplate):

   public class Stu
    {
        public Stu() { }

         //这里我只要3个属性就行了
         public Stu(String name,String mail,String address)
        {
            this.Name = name;
          
            this.Mail = mail;
           
            this.Address = address;
        }

        public String Name { get; set; }

        public String Mail { get; set; }

        public String Address { get; set; }

        public String Phone { get; set; }
    }

 

第二步 狂加数据:

 

            List< Stu> larr = new List< Stu>();
          
            larr.Add(new Stu("联想", "1@1.com", "中国"));
           
            larr.Add(new Stu("神州", "1@1.com", "美国"));
           
            larr.Add(new Stu("惠普", "1@1.com", "俄罗斯"));
           
            larr.Add(new Stu("苹果", "1@1.com", "印度"));

 

第三步 开始调用方法:

 

           CustomForeach customEach = new CustomForeach();       

 

           customEach.ForeachOfClass(new { Name="", Mail = "", Address = "" }, larr,
                (propertyName, originValue,currentValue) =>
            {
                 Response.Write(String.Format("{0}={1}", propertyName, currentValue));

                 //获取当前数据集合的元素索引 customEach.Elementindex

                 //获取当前数据集合的元素第几个属性索引 customEach.PropertyIndex

            });

 

整个使用过程结束...

 

 

CustomForeach源码如下:

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值