C# 拼接List中各对象里的字符串 增加ConvertAll和Select的区别

有不少都用到了拼接字符串, 

我之前用循环拼字符串,有时候写起来很麻烦。现在查到这样一种写法,大家可以保留备用:

QueryUsers = String.Join(",", query.Users.ConvertAll(u => u.Code).ToArray())

String.Join(string separator, params string[] value);

第一个参数是连接符,而且只连接,不会在头尾加出多余的字符。

第二个参数是一个string类型的数组。

这里又先调用List的ConvertAll方法

List<TOutput> ConvertAll<TOutput>(Converter<T, TOutput> converter);

将query对象里的Users(是一个List<User>)全部转换为字符串。

这里又用到一个Lambda表达式:u => u.Code,意为取得所有对象的Code。

最后ToArray()成为字符串数组。

续:既然这里的Code是string类型,那根本不用ConvertAll,直接用Select即可。感谢xujif提醒。

当需要拼接的对象不是直接的string时,才适用Convert。比如

<span style="text-decoration: line-through;">QueryUsers = String.Join(",", query.Users.ConvertAll(u => u.ToString()).ToArray())</span>

 

再续:不求甚解的我还是正经的查了一下ConvertAll和Select的区别。

从来源说,Select是LINQ扩展方法之一,可以用于IEnumerable<>对象,从.Net 3.5开始引入;ConvertAll只在List<>中实现,从.Net 2.0开始。

此外,他们做的处理有些许不同,在不同的情况下有区别。

ConvertAll方法从原有List直接生成一个新的List;Select方法使用延迟执行,只在要用到时才处理项目。

也就是说如果你不需要全部的项目时,Select方法是更有效率的;另一方面,一但ConvertAll返回了List,你就可以不再保留原有的List了。

本文中数据类型为List,取出全部项目后立即拼接为字符串,这个情况下用ConvertAll是没有错的。

参考:http://stackoverflow.com/questions/1571819/difference-between-select-and-convertall-in-c-sharp

转载于:https://www.cnblogs.com/movingcity/archive/2013/03/13/2957803.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值