[英]csv to xml using LINQ
我有一個ac#代碼,其中有一個包含客戶數據的csv文件,如下所示:
ClientNumber1,Name1, BenefitCode1, EffectiveDt1
ClientNumber1,Name1, BenefitCode2, EffectiveDt2
ClientNumber2,Name2, BenefitCode3, EffectiveDt3
現在,在這種情況下,我希望輸出XML在同一客戶中具有Benefit
多個標記(例如,csv中的前兩行具有相同的customer,但是有兩個不同的Benefit
)
我的輸出xml應該像
<Member>
<Num>ClientNumber1<Num>
<Nm>Name1</Nm>
<Benefit>
<Bc>BenefitCode1</Bc>
<Dt>EffectiveDt1</Dt>
</Benefit>
<Benefit>
<Bc>BenefitCode2</Bc>
<Dt>EffectiveDt2</Dt>
</Benefit>
</Member>
<Member>
<Num>ClientNumber1<Num>
<Nm>Name2</Nm>
<Benefit>
<Bc>BenefitCode3</Bc>
<Dt>EffectiveDt3</Dt>
</Benefit>
</Member>
因此,基本上,在執行LINQ時,我還應該能夠使用以前的ClientNum
進行檢查,並且如果我具有相同的num,則應該在相同的Member
標記中添加收益數據。
謝謝。
我將其分為兩個明顯分開的步驟:
1)從文件創建數據表示-通過創建匿名類型(按客戶編號分組):
var data = File.ReadAllLines(@"C:\Desktop\test.csv")
.Select(line => line.Split(','))
.Select(parts => new
{
ClientNumber = parts[0].Trim(),
Name = parts[1].Trim(),
BenefitCode = parts[2].Trim(),
EffectiveDate = parts[3].Trim()
})
.GroupBy(x => x.ClientNumber);
2)將數據另存為XML:
var xml = new XDocument(
new XElement("SomeRoot",
output.Select(e => new XElement("Member",
new XElement("Num", e.Key),
new XElement("Name", e.First().Name),
e.Select(x => new XElement("Benefit",
new XElement("Bc", x.BenefitCode),
new XElement("Dt", x.EffectiveDate)))
))
)
);
然后您可以使用xml.Save(...)
將其保存到文件中
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.