代码之家  ›  专栏  ›  技术社区  ›  Maslow

为什么此DefaultifEmpty选择IEnumerable<char>而不是string?

  •  1
  • Maslow  · 技术社区  · 14 年前
     from a in mainDoc.XPathSelectElements("//AssembliesMetrics/Assembly/@Assembly")
                                let aVal=a.Value
                                where aVal.IsNullOrEmpty( )==false&&aVal.Contains(" ")
                                select aVal.Substring(0, aVal.IndexOf(' '))
                                  into aName
                                  let interestedModules=new[ ] { "Core", "Credit", "Limits", "Overdraft" }
                                  where aName.Contains(".")
                                  let module=
                                    interestedModules
                                    .FirstOrDefault(x => aName
                                      .StartsWith(x, StringComparison.InvariantCultureIgnoreCase))
                                  where module!=null
                                  group aName by module.DefaultIfEmpty() // ienumerable<char>, why?
                                    into groups
                                    select new { Module=groups.Key??"Other", Count=groups.Count( ) };
    
    2 回复  |  直到 14 年前
        1
  •  4
  •   SLaks    14 年前

    module

    IEnumerable<char>

    Enumerable.DefaultIfEmpty IEnumerable<T>

    null

    group aName by module ?? "SomeValue"
    

    where module!=null
    ??"Other" select

        2
  •  1
  •   Justin Niessner    14 年前

    module

    let module = interestedModules
                     .FirstOrDefault(x => aName
                     .StartsWith(x, StringComparison.InvariantCultureIgnoreCase))
    

    IEnumerable<char>

    推荐文章