从IList<string>或IEnumerable<string>创建逗号分隔的字符串值列表的最干净的方法是什么?
string . join(…)操作在字符串[]上,因此当IList<string>或IEnumerable<string>等类型不能轻松转换为字符串数组时,处理起来很麻烦。
从IList<string>或IEnumerable<string>创建逗号分隔的字符串值列表的最干净的方法是什么?
string . join(…)操作在字符串[]上,因此当IList<string>或IEnumerable<string>等类型不能轻松转换为字符串数组时,处理起来很麻烦。
当前回答
.NET 4 +。
IList<string> strings = new List<string>{"1","2","testing"};
string joined = string.Join(",", strings);
Detail & Pre .Net 4.0解决方案
IEnumerable<string>可以很容易地用LINQ转换成一个字符串数组。NET 3.5):
IEnumerable<string> strings = ...;
string[] array = strings.ToArray();
如果你需要,编写等效的helper方法很容易:
public static T[] ToArray(IEnumerable<T> source)
{
return new List<T>(source).ToArray();
}
然后这样称呼它:
IEnumerable<string> strings = ...;
string[] array = Helpers.ToArray(strings);
然后你可以调用string.Join。当然,你不需要使用helper方法:
// C# 3 and .NET 3.5 way:
string joined = string.Join(",", strings.ToArray());
// C# 2 and .NET 2.0 way:
string joined = string.Join(",", new List<string>(strings).ToArray());
后者有点拗口:)
这可能是最简单的方法,而且性能也很好——关于性能究竟是什么样的,还有其他问题,包括(但不限于)这个问题。
从。net 4.0开始,字符串中有更多的重载可用。加入,你可以这样写
string joined = string.Join(",", strings);
简单多了:)
其他回答
有点难看,但很管用:
string divisionsCSV = String.Join(",", ((List<IDivisionView>)divisions).ConvertAll<string>(d => d.DivisionID.ToString("b")).ToArray());
在您给它转换器之后,从列表中给您一个CSV(在本例中d => d.DivisionID.ToString("b"))。
Hacky但工作-可以成为一个扩展方法也许?
希望这是最简单的方法
string Commaseplist;
string[] itemList = { "Test1", "Test2", "Test3" };
Commaseplist = string.join(",",itemList);
Console.WriteLine(Commaseplist); //Outputs Test1,Test2,Test3
你也可以使用下面的方法将它转换为一个数组,使用其他人列出的方法之一:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.IO;
using System.Net;
using System.Configuration;
namespace ConsoleApplication
{
class Program
{
static void Main(string[] args)
{
CommaDelimitedStringCollection commaStr = new CommaDelimitedStringCollection();
string[] itemList = { "Test1", "Test2", "Test3" };
commaStr.AddRange(itemList);
Console.WriteLine(commaStr.ToString()); //Outputs Test1,Test2,Test3
Console.ReadLine();
}
}
}
编辑:这是另一个例子
使用. net 3.5中的Linq扩展,可以很容易地将它们转换为数组。
var stringArray = stringList.ToArray();
我知道现在回答这个问题有点晚了,但它可能会对那些在这里寻找这个问题答案的人有所帮助。
你可以这样做:
var finalString = String.Join(",", ExampleArrayOfObjects.Where(newList => !String.IsNullOrEmpty(newList.TestParameter)).Select(newList => newList.TestParameter));
使用ExampleArrayOfObjects。我们将在哪里创建一个非空值的新对象列表
然后进一步在新的对象列表上使用. select,以","作为分隔符连接并生成最终字符串。