[英]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.