#csv #sorting #multidimensional-array
Вопрос:
У меня есть очень простой файл .csv с идентификаторами и серийными номерами, фактическое приложение не будет знать, сколько строк, но всегда будет иметь два столбца
1,16600687 2,16600939 3,16604031 4,16607302
У меня есть все остальное, но я загружаю данные только в массив 1D, и запятая остается в данных
Результат, который я получаю, это строковое значение для 3-й позиции 3,16604031 Как мне разделить это, чтобы это был 2D массив со значением get [2,0] равно 3, а значение get [2,1] равно 16604031 ?
private void button1_Click(object sender, EventArgs e) { string stFileNamenPath = "(put location of file here)"; DialogResult result = openFileDialog1.ShowDialog(); StreamReader sr = new StreamReader(stFileNamenPath); string[] sortArray = null; while (!sr.EndOfStream) { string strResult = sr.ReadToEnd(); sortArray = strResult.Split(new string[] { Environment.NewLine }, StringSplitOptions.None); } string stTest = (string)sortArray.GetValue(2); MessageBox.Show("string value for 3rd position is " stTest); }
CSV-файл
1,16600687 2,16600939 3,16604031 4,16607302
Ответ №1:
Ответ, который приходит мне на ум, — это просто оператор LINQ, за которым следует оператор Select. Первый для фильтрации, а второй для фактического изменения имеющихся у вас данных. Ваш код был бы примерно таким
string stFileNamenPath = "(put location of file here)"; //DialogResult result = openFileDialog1.ShowDialog(); StreamReader sr = new StreamReader(stFileNamenPath); string[] sortArray = null; while (!sr.EndOfStream) { string strResult = sr.ReadToEnd(); sortArray = strResult.Split(new string[] { Environment.NewLine }, StringSplitOptions.None); } char separator = ','; var mappedArray = sortArray .Where(x =gt; !string.IsNullOrEmpty(x) amp;amp; !string.IsNullOrWhiteSpace(x)) .Select(x =gt; new string[] { x.Split(separator)[0], x.Split(separator)[1] }).ToArray(); var stTest = mappedArray[2][1]; MessageBox.Show("string value for 3rd position is " stTest);
Комментарии:
1. Это сработало идеально. Спасибо
2. Всегда пожалуйста. Любые «большие пальцы вверх» или положительные отзывы будут высоко оценены!
3. У меня недостаточно участия, чтобы проголосовать, но большое вам спасибо за удивительно простое и элегантное решение