【发布时间】:2010-10-08 14:07:38
【问题描述】:
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( ) };
【问题讨论】:
-
如果不清楚,我有一个来自 xml 文件的程序集列表,我想查看
interested modules命名空间中的程序集以及interestedModules名称或其他名称(如果是)没有一个我特别感兴趣 -
你期望它返回什么?
-
你为什么要这么称呼它?
-
因为我不希望通过过滤掉模块为空的结果来分组
-
那你为什么有
where module!=null?查看我的编辑。
标签: c# linq group-by defaultifempty