zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    java时间戳转换日期 和 日期转换时间戳
    通过blob文件导出下载成Excel文件
    三元表达式进化
    Vue切换组件实现返回后不重置数据,保留历史设置操作
    vue 下载文件
    ide打断点,跑到某一行代码,再执行的方法
    Java操作终端的方法
    前端下载本地文件的方法
    java 读取本地json文件
    js 时间戳转换
  • 原文地址:https://www.cnblogs.com/movingcity/p/2957803.html
Copyright © 2011-2022 走看看