C# 将自己的字符串与分隔的ArrayList连接

C# 将自己的字符串与分隔的ArrayList连接,c#,string,arraylist,C#,String,Arraylist,我的ArrayList对象包含3个值 ArrayList arr=new ArrayList() arr.Add("abc"); arr.Add("def"); arr.Add("ghi"); 我需要用,分隔符分隔这些值 所以,我在谷歌上搜索并得到了解决方案 string afterjoined=string.Join(",", (string[])arr.ToArray(Type.GetType("System.String"))); 上述代码将返回为 abc、def、ghi 但是上面的代

我的ArrayList对象包含3个值

ArrayList arr=new ArrayList()
arr.Add("abc");
arr.Add("def");
arr.Add("ghi");
我需要用分隔符分隔这些值

所以,我在谷歌上搜索并得到了解决方案

string afterjoined=string.Join(",", (string[])arr.ToArray(Type.GetType("System.String")));
上述代码将返回为

abc、def、ghi

但是上面的代码不允许任何字符串与之连接

我想要一个特定的字符串,它需要与最终的分隔值连接,如下所示

MYabc、MYdef、Myghi

下面是我对现有代码的尝试(不起作用)

这就是您需要的:

string.Join(",", 
    arr.Cast<string>() // use cast here instead of the casting to reduce the number of ()s
    .Select(x => "MY" + x))

如果需要此功能,我会使用此扩展方法(通常与generic
IEnumerable
,为
ArrayList
修改):

    public static string MergeWithPrefix(this ArrayList list, string prefix, string separator = ";")
    {
        var sb = new StringBuilder(list.Count * 16);

        foreach (var item in list)
            sb.Append(prefix).Append(item).Append(separator);
        sb.Remove(sb.Length - separator.Length, separator.Length);

        return sb.ToString();
    }

您使用
ArrayList
而不是
List
有什么原因吗?实际上,我正在开发一个SSIS包。因此,我必须使用ArrayList读取文件中的所有行
List<string> arr=new List<string>();
arr.Add("abc");
arr.Add("def");
arr.Add("ghi");
string joined = string.Join(",", arr.Select(x => "MY" + x));
    public static string MergeWithPrefix(this ArrayList list, string prefix, string separator = ";")
    {
        var sb = new StringBuilder(list.Count * 16);

        foreach (var item in list)
            sb.Append(prefix).Append(item).Append(separator);
        sb.Remove(sb.Length - separator.Length, separator.Length);

        return sb.ToString();
    }