Для разделения строк и подсчета вхождений вы можете разделить с помощью NewLine и использовать Linq
string[] lines = str.Split(new[] { Environment.NewLine },StringSplitOptions.None);
var result = lines.GroupBy(g => g)
.Select(s => new { Key = s.Key, Count = s.Count()})
.ToDictionary(d => d.Key, d => d.Count);
В результате будут строки, которые имеют одно вхождение.Если вам нужны только повторяющиеся строки
var result = lines.GroupBy(g => g).Where(x=> x.Count()>1)
.Select(s => new { Key = s.Key, Count = s.Count()})
.ToDictionary(d => d.Key, d => d.Count);
Вы можете написать CSV прямо из словаря
File.WriteAllLines(filePath, result.Select(x=>$"{x.Key},{x.Value},"));