У меня был такой код:
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' »
listStrLineElements = line?.Split(',').ToList();
Либо используйте:
List<string> list = new List<string>(array);
или из LINQ:
List<string> list = array.ToList();
Или измените свой код, чтобы не полагаться на конкретную реализацию:
IList<string> list = array; // string[] implements IList<string>
источник
Включить, используя пространство имен
System.Linq
List<string> stringList = line.Split(',').ToList();
вы можете легко использовать его для итерации по каждому элементу.
foreach(string str in stringList) { }
String.Split()
возвращает массив, поэтому преобразуйте его в список, используяToList()
источник
Просто ты можешь использовать с
using System.Linq;
List<string> stringList = line.Split(',') // this is array .ToList(); // this is a list which you can loop in all split string
источник
Попробуйте эту строку:
List<string> stringList = line.Split(',').ToList();
источник
Это прочитает файл csv и включает разделитель строк csv, который обрабатывает двойные кавычки и может читать, даже если он открыт в Excel.
public List<Dictionary<string, string>> LoadCsvAsDictionary(string path) { var result = new List<Dictionary<string, string>>(); var fs = new FileStream(path, FileMode.Open, FileAccess.Read, FileShare.ReadWrite); System.IO.StreamReader file = new System.IO.StreamReader(fs); string line; int n = 0; List<string> columns = null; while ((line = file.ReadLine()) != null) { var values = SplitCsv(line); if (n == 0) { columns = values; } else { var dict = new Dictionary<string, string>(); for (int i = 0; i < columns.Count; i++) if (i < values.Count) dict.Add(columns[i], values[i]); result.Add(dict); } n++; } file.Close(); return result; } private List<string> SplitCsv(string csv) { var values = new List<string>(); int last = -1; bool inQuotes = false; int n = 0; while (n < csv.Length) { switch (csv[n]) { case '"': inQuotes = !inQuotes; break; case ',': if (!inQuotes) { values.Add(csv.Substring(last + 1, (n - last)).Trim(' ', ',')); last = n; } break; } n++; } if (last != csv.Length - 1) values.Add(csv.Substring(last + 1).Trim()); return values; }
источник
string[] thisArray = myString.Split('/');//<string1/string2/string3/---> List<string> myList = new List<string>(); //make a new string list myList.AddRange(thisArray);
Используйте
AddRange
для переходаstring[]
и получения списка строк.источник