批量转换List中的对象
来源:互联网 发布:java支付接口开发原理 编辑:程序博客网 时间:2024/04/29 12:32
List是个泛型类,它提供的ConvertAll方法可以迅速的生成另外一个包含不同类型元素的List对象。这个方法的原型是: public List<TOutput> ConvertAll<TOutput>(Converter<T, TOutput> converter); T就是这个List中元素的类型。Converter类是一个delegate类型的类,其原型为public delegate TOutput Converter<TInput, TOutput>(TInput input); 我们常常见到这种循环
List<SomeType> a = new List();
//Init List
foreach(SomeType s in a)
{
//Do your business here
}
...
其中的For循环是没有必要的,因为List已经为我们提供了这种批量转换的方式,结合匿名代理,就更简单,.Net 3.0的Lambda表达式可以让整个转换更简单,我们以int转string来举例, 转换规则用一个方法定义(单个对象转换的方法),然后用作ConvertAll()的参数即可。
比如如下代码段转换int到string:
public string ConvertIntToString(int x) { return x.ToString(); }//...List<int> a = new List<int>();//Add elements to aList<string> b = a.ConvertAll<string>(ConvertIntToString);
如果不考虑复用性,而转换规则又比较简单,匿名代理会更简洁:
List<int> a = new List<int>();//Add elements to aList<string> b = a.ConvertAll<string>(delegate(int x) { return x.ToString(); });
这里的匿名代理用Lambda表达式会更简洁易读些:
List<string> b = a.ConvertAll<string>((x)=>x.ToString());
附上最简代码,仅供参考 (C#3.0编译器会自动为我们推断类型):
var b = a.ConvertAll(x=>x.ToString());
这种方式比起前面的迭代取元素的方法要简单多了, 当然可以猜想这个ConvertAll的实现代码应该就是做的那个for循环:
public class List<T> { private T[] elements; //... public void Add(T e) { //... } public List<TOut> ConvertAll<TOut>(Converter<T, TOut> converter) { List<TOut> outElementArr = new List<TOut>(); foreach (T element in elements) { outElementArr.Add(converter(element)); } return outElementArr; } }
思路放远一些,这个方法还能帮我们做更多的事情,它提供了一种创建对象的能力,使我们能从一组对象中创建另一组对象,这可就不是字面Convert所能包含的了,比如我们想求一个数组中每个数的平方...
- 批量转换List中的对象
- linq更改list实体对象中的字段 批量条件
- ibatis批量插入对象list
- 把list中的对象转换为json数据的方式
- gson转换list对象
- 集合List中的批量删除
- struts2中的批量类型转换
- mybatis 批量插入list对象集合
- 把java中的list对象转换成net.sf.JSONArray类型对象
- Json数据转换list对象
- Json数据转换list对象
- List转换成JSON对象
- JSON字符串对象转换List
- java中的对象转换
- ECMA中的对象转换
- java中的对象转换
- java将对象列表中的某个属性转换成List或Map
- 去除list中的重复对象
- SAMP: Solaris+Apache+MySql+PHP
- ERP与OA的结合 时间与精力让我苦恼!
- 调试开发环境下的其他程序及PIL module datastore warning 的解决办法
- Hello from Exxon-mobile
- ExtJs组件学习笔记
- 批量转换List中的对象
- 做自己的搜索功能
- firefox body高度问题
- 利用Reflection API访问类的私有成员、私有方法
- 不同字符集的url编码
- html error cause by long line
- 通过excel可识别的xml结构直接生成xls文件
- SQL时间函数(详细说明2)
- FancyPants和Orb宣布将发行Moblin MID产品