簡體   English   中英

使用LINQ將csv轉換為xml

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

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM