我有这样的代码:

    String[] lineElements;       
    . . .
    try
    {
        using (StreamReader sr = new StreamReader("TestFile.txt"))
        {
            String line;
            while ((line = sr.ReadLine()) != null)
            {
                lineElements = line.Split(',');
                . . .

但后来我想也许我应该用一个列表来代替。但是这段代码:

    List<String> listStrLineElements;
    . . .
    try
    {
        using (StreamReader sr = new StreamReader("TestFile.txt"))
        {
            String line;
            while ((line = sr.ReadLine()) != null)
            {
                listStrLineElements = line.Split(',');
. . .

...给我,“不能隐式转换类型'string[]'到'System.Collections.Generic.List'”


当前回答

string.Split()返回一个数组-你可以使用ToList()将它转换为一个列表:

listStrLineElements = line.Split(',').ToList();

注意,您需要导入System。Linq访问. tolist()函数。

其他回答

试试这句台词:

List<string> stringList = line.Split(',').ToList(); 

我使用这个扩展方法处理空输入,也删除多余的空白。

public static List<string> CsvToList(this string csv)
{
    if (string.IsNullOrEmpty(csv))
    {
        return new List<string>();
    }

    return csv.Split(',').Select(item => item.Trim()).ToList();
}

注意,如果输入的CSV是:"Apple, Orange, Pear",我们想要去掉逗号后的空白。

要么使用:

List<string> list = new List<string>(array);

或从LINQ:

List<string> list = array.ToList();

或者改变你的代码不依赖于特定的实现:

IList<string> list = array; // string[] implements IList<string>

string.Split()返回一个数组-你可以使用ToList()将它转换为一个列表:

listStrLineElements = line.Split(',').ToList();

注意,您需要导入System。Linq访问. tolist()函数。

string[] thisArray = myString.Split('/');//<string1/string2/string3/--->     
List<string> myList = new List<string>(); //make a new string list    
myList.AddRange(thisArray);    

使用AddRange传递string[]并获得一个字符串列表。