从IList<string>或IEnumerable<string>创建逗号分隔的字符串值列表的最干净的方法是什么?

string . join(…)操作在字符串[]上,因此当IList<string>或IEnumerable<string>等类型不能轻松转换为字符串数组时,处理起来很麻烦。


当前回答

由于我在搜索对象列表的特定属性(而不是ToString())时到达这里,这里是对接受的答案的补充:

var commaDelimited = string.Join(",", students.Where(i => i.Category == studentCategory)
                                 .Select(i => i.FirstName));

其他回答

希望这是最简单的方法

 string Commaseplist;
 string[] itemList = { "Test1", "Test2", "Test3" };
 Commaseplist = string.join(",",itemList);
 Console.WriteLine(Commaseplist); //Outputs Test1,Test2,Test3

在阅读本文之前,我刚刚解决了这个问题。我的解决方案如下:

   private static string GetSeparator<T>(IList<T> list, T item)
   {
       return (list.IndexOf(item) == list.Count - 1) ? "" : ", ";
   }

被称为:

List<thing> myThings;
string tidyString;

foreach (var thing in myThings)
{
     tidyString += string.format("Thing {0} is a {1}", thing.id, thing.name) + GetSeparator(myThings, thing);
}

我也可以这样简单地表达,也会更有效率:

string.Join(“,”, myThings.Select(t => string.format(“Thing {0} is a {1}”, t.id, t.name)); 

你可以在列表和IEnumerables上使用. toarray(),然后根据需要使用String.Join()。

如果你想要连接的字符串在对象列表中,那么你也可以这样做:

var studentNames = string.Join(", ", students.Select(x => x.name));

使用. net 3.5中的Linq扩展,可以很容易地将它们转换为数组。

   var stringArray = stringList.ToArray();