using System.Collections.Generic;
using System.Xml.Serialization;
using System.Globalization;
public static void Test()
var departments = dt.AsEnumerable().GroupBy(r => r.Field<string>("Number"));
var root = new XElement("Root",
new XElement("Type", "MyType"),
new XElement("FileDate", "12/15/2022"),
new XElement("Version", "2.0"),
new XElement("Department",
new XElement("Number", d.Key),
new XElement("Id", "0000"),
new XElement("DeptNo", r.Field<string>("DeptNo")),
new XElement("DeptName", r.Field<string>("DeptName")),
new XElement("DeptCode", r.Field<string>("DeptCode")),
new XElement("DepartmentData",
new XElement("State", r.Field<string>("State")),
new XElement("Date", r.Field<string>("Date")),
new XElement("Year", r.Field<string>("Year")),
new XElement("ELP", r.Field<string>("ELP"))
var required = XElement.Parse(GetRequiredXml());
required.DescendantNodes().Where(x => x.NodeType == XmlNodeType.Comment).Remove();
Assert.That(XNode.DeepEquals(root, required));
public static DataTable GetDataTable()
Number,DeptNo,DeptName,State,Date,Year,DeptCode,ELP
123A,1001,DESC JR,PA,12/12/2021,2021,74-123,Y
123A,1002,PHIL JR,NY,09/12/2021,2021,74-124,Y
123A,1003,GILB JR,CA,08/12/2021,2021,74-125,N
using (var reader = new StringReader(csvText))
using (var csv = new CsvHelper.CsvReader(reader, CultureInfo.InvariantCulture))
using (var dr = new CsvHelper.CsvDataReader(csv))
var dt = new DataTable();
static string GetRequiredXml() =>
<FileDate>12/15/2022</FileDate>
<DeptName>DESC JR</DeptName>
<DeptCode>74-123</DeptCode>
<DeptName>PHIL JR</DeptName>
<DeptCode>74-124</DeptCode>
<DeptName>GILB JR</DeptName>
<DeptCode>74-125</DeptCode>
<!-- Other Trust nodes skipped -->
public static void Main()
Console.WriteLine("Environment version: {0} ({1}, {2})", System.Runtime.InteropServices.RuntimeInformation.FrameworkDescription , Environment.Version, Environment.OSVersion);
Console.WriteLine("Failed with unhandled exception: ");