Вы написали большинство хороших частей сами, и теперь вам нужно заполнить пробелы.Разбивка шагов
- Считывание CSV в коллекцию
- Групповое собрание по городу
- Запись каждой группы в отдельный файл
Первым шагом, конечно, является чтение входного файла
var listOutput = new List<DatiOutput>();
while ((line = file.ReadLine()) != null)
{
var data = line.Split(new []{";"},StringSplitOptions.RemoveEmptyEntries);
if(!data[0].Trim().Equals("NAME"))
listOutput.Add(new DatiOutput{ Name = data[0].Trim(), City = data[1].Trim()});
}
Я предположил, что ваш DatiOutput выглядит следующим образом, поскольку он не был задан.
public class DatiOutput
{
public string City{get;set;}
public string Name{get;set;}
}
Тогда следующим шагом будетГруппировать коллекции по городам, а затем записывать их в файл.Вы можете использовать LINQ для группировки коллекции по городам.
listOutput.GroupBy(c=>c.City)
Получив результат, вы теперь можете создать имя файла с соответствующим названием города и добавить в него данные.
foreach (var objOut in listOutput.GroupBy(c=>c.City))
{
var filePath = $"{Path.Combine(Path.GetDirectoryName(inputFile),Path.GetFileNameWithoutExtension(inputFile))}_{objOut.First().City}.csv";
using(System.IO.StreamWriter fileOut = new System.IO.StreamWriter(File.Open(filePath, FileMode.OpenOrCreate, FileAccess.ReadWrite)))
{
fileOut.WriteLine($"NAME;CITY");
foreach(var items in objOut)
{
fileOut.WriteLine($"{items.Name};{items.City}");
}
}
}
Вы бы получили желаемый результат