2014-04-11 152 views
0

我正在編寫一個需要將XML文檔轉換爲平面文件的集成程序。我有下面的代碼,靜態地命名應該添加到平面文件的元素。我想要做的是能夠傳入某種元素名稱列表,因此此方法可用於不同的集成。這個元素名稱列表的大小也會改變。我想保留這一個單一的表達。有任何想法嗎?LINQ to XML - 動態元素選擇

csv += 
      (from el in xmlDoc.Descendants("customer") 
      select 
       String.Format("{0}|{1}|{2}|{3}{4}", 
        (string)el.Element("customer_num"), 
        (string)el.Element("customer_name"), 
        (string)el.Element("last_pmt_date"), 
        (string)el.Element("last_sale_date"), 
        Environment.NewLine 
       ) 
      ) 
      .Aggregate(
       new StringBuilder(), 
       (sb, s) => sb.Append(s), 
       sb => sb.ToString() 
      ); 

回答

0
List<string> names = (...) 

csv += 
    (from el in xmlDoc.Descendants("customer") 
    select String.Join("|", names.Select(x => (string)el.Element(x))) 
    ) 
    .Aggregate(
     new StringBuilder(), 
     (sb, s) => sb.AppendLine(s), 
     sb => sb.ToString() 
    );