LINQ to XML - 动态元素选择

时间:2014-04-11 00:21:19

标签: c# xml linq csv linq-to-xml

我正在编写一个需要将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()
            );

1 个答案:

答案 0 :(得分: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()
    );