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 ConvertAll(Converter<T, TOutput> converter);

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

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

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

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

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

QueryUsers = String.Join(“,”, query.Users.ConvertAll(u => u.ToString()).ToArray())

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

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

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

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

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

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

来源:https://www.cnblogs.com/movingcity/p/2957803.html

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
C#,有多种方法可以拼接一个字符串列表(List<string>)。其一种方法是使用String.Join方法。这个方法接受两个参数:一个字符串,用于在每对字符串之间添加分隔符,和一个字符串数组或一个字符串集合。以下是一个示例代码: List<string> list = new List<string>() { "Hello", "World", "C#" }; string result = String.Join(",", list); Console.WriteLine(result); 这段代码将会输出"Hello,World,C#",其每个字符串之间用逗号分隔。\[2\] 另一种方法是使用字符串插值(String Interpolation)的方式。在C# 6.0及以上版本,可以使用$符号来简化字符串拼接操作。以下是一个示例代码: List<string> list = new List<string>() { "Hello", "World", "C#" }; string result = $"String.Join方式实现结果: {String.Join(",", list)}"; Console.WriteLine(result); 这段代码将会输出"String.Join方式实现结果: Hello,World,C#",其使用了字符串插值的方式将拼接结果直接嵌入到字符串。\[3\] #### 引用[.reference_title] - *1* [C# 字符串拼接](https://blog.csdn.net/qq_63585949/article/details/127197390)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^koosearch_v1,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [C#三种方式实现List字符串](https://blog.csdn.net/zls365365/article/details/129096059)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^koosearch_v1,239^v3^insert_chatgpt"}} ] [.reference_item] - *3* [C#字符串拼接](https://blog.csdn.net/qq_37369706/article/details/105687522)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^koosearch_v1,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值