У меня есть следующие строки (больше, но этот образец в порядке) в CSV файле.
Date,Open,High,Low,Close,Volume,Adj Close
2012-11-01,77.60,78.12,77.37,78.05,186200,78.05
2012-10-31,76.96,77.75,76.96,77.47,290700,77.47
2012-10-26,77.30,77.62,76.86,77.36,195100,77.36
Мне нужно выполнить несколько различных функций для данных, каждый из которых нуждается только в определенных полях из строки. т.е. для функции 1 понадобятся 2-й и 3-й наборы данных из каждой строки, для функции 2 потребуется 4-й набор данных. Как мне это сделать с LINQ (пропуская первую строку)?
Вы можете попробовать следующее:
var lines = File.ReadAllLines(@"Linq.csv").Select(x => x.Split(','));
//Considering each line contains same no. of elements
int lineLength = lines.First().Count();
var CSV = lines.Skip(1)
.SelectMany(x => x)
.Select((v, i) => new { Value = v, Index = i % lineLength })
.Where(x => x.Index == 2 || x.Index == 3)
.Select(x => x.Value);
foreach (var data in CSV)
{
Console.WriteLine(data);
}
Шаги: -
Шаг 1 - Прочитайте все строки из файла CSV и разделите их на Comma (,), что приведет к массиву строк os с каждым значением.
Шаг 2 - Пропустите первый массив (который удерживает заголовки), затем используйте SelectMany, чтобы сгладить список в один. Далее вам нужно установить индекс для каждого набора (в списке сглаживания), который я делаю с помощью Select opertaor, последнее, что осталось, - это фильтрация и выбор элемента.
Вы можете попробовать следующий код для функции 1
var stuff = from l in File.ReadAllLines(filename)
let x = l.Skip(1).Split(new [] {',', ' '}, StringSplitOptions.RemoveEmptyEntries)
.Select(s => s)
.select new
{
second= s[1],
third= s[2]
};
let x = l.Split(new [] {',', ' '}, StringSplitOptions.RemoveEmptyEntries) .Skip(1) .Select(s => int.Parse(s))
который кажется довольно хорошим решением для моего проблема, но некоторые вещи путают мой синтаксис мудрый. Команда пропуска, это пропускает строку или первый сегмент строки? И разделение, это просто разделить наборы данных между запятыми на отдельные объекты? вот где я запутался