2014-04-11 128 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() 
    );