zoukankan      html  css  js  c++  java
  • C# 3.0 LINQ to XML

    高级转换:

    static IEnumerable<XElement> ExpandPaths (IEnumerable<string> paths)
    {
      var brokenUp = from path in paths
                     let split = path.Split (new char[] { '\' }, 2)
                     orderby split[0]
                     select new
                     {
                       name = split[0],
                       remainder = split.ElementAtOrDefault (1)
                     };
    
      IEnumerable<XElement> files = from b in brokenUp
                                    where b.remainder == null
                                    select new XElement ("file", b.name);
    
      IEnumerable<XElement> folders = from b in brokenUp
                                      where b.remainder != null
                                      group b.remainder by b.name into grp
                                      select new XElement ("folder",
                                        new XAttribute ("name", grp.Key),
                                        ExpandPaths (grp)
                                      );
    
      return files.Concat (folders);
    }
    
    static void RunQuery()
    {
      XElement project = XElement.Load ("myProjectFile.csproj");
      XName ns = project.Name.Namespace;
    
      IEnumerable<string> paths =
        from compileItem in
          project.Elements (ns + "ItemGroup").Elements (ns + "Compile")
        let include = compileItem.Attribute ("Include")
        where include != null
        select include.Value;
    
      XElement query = new XElement ("Project", ExpandPaths (paths));
    }
  • 相关阅读:
    Live2d Test Env
    Live2d Test Env
    Live2d Test Env
    Live2d Test Env
    Live2d Test Env
    偷东西的学问-背包问题
    HMM-前向后向算法理解与实现(python)
    详解数组分段和最大值最小问题(最小m段和问题)
    打家劫舍系列
    面试题56
  • 原文地址:https://www.cnblogs.com/yangzhenping/p/3346017.html
Copyright © 2011-2022 走看看