public static void ConvertToXml() { string[] lines = File.ReadAllLines(@"H:\SSIS\Source\Intermediate.csv"); Dictionary<string, Submission> submissions = new Dictionary<string, Submission>(); foreach (var line in lines) { var row = line.Split(','); var submissionId = row[0]; if (submissions.ContainsKey(submissionId)) { var submission = submissions[submissionId]; submission.PolicyDrivers.Add(Driver.FromCsv(row)); } else { submissions[submissionId] = Submission.FromCsv(row); } } XElement xml = new XElement("Submissions", submissions.Values.Select(s => s.ToXElement())); xml.Save(@"H:\SSIS\Destination\demo xml.xml"); }