Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/linq/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何在C语言中获取字典值集合的计数#_C#_Linq_Asp.net Mvc 4_Generics_Data Structures - Fatal编程技术网

C# 如何在C语言中获取字典值集合的计数#

C# 如何在C语言中获取字典值集合的计数#,c#,linq,asp.net-mvc-4,generics,data-structures,C#,Linq,Asp.net Mvc 4,Generics,Data Structures,我试图获取字典值集合的计数,其中集合项的字段与集合中的键以及类型匹配 我的集合如下所示,注意对象已初始化,这只是伪代码: var results = Dictionary<string, List<CourseEnrollmentsByStudentSQLResult>(); 现在,为了获得计数,我在我的字典上循环并输出每个键的头,这就是我试图输出字典值集合的计数的地方 foreach(var result in results) { <span

我试图获取字典值集合的计数,其中集合项的字段与集合中的键以及类型匹配

我的集合如下所示,注意对象已初始化,这只是伪代码:

var results = Dictionary<string, List<CourseEnrollmentsByStudentSQLResult>();
现在,为了获得计数,我在我的字典上循环并输出每个键的头,这就是我试图输出字典值集合的计数的地方

    foreach(var result in results) {
       <span class="label label-default label-fat">
          @result.Value.SelectMany(r => r.Courses).Count(c => c.Course == result.Key && c.Type == "required")
       </span>
    }
foreach(结果中的var结果){
@result.Value.SelectMany(r=>r.Courses.Count)(c=>c.Courses==result.Key&&c.Type==“必需”)
}
但出于某种原因,它正在返回零,而我知道它不应该返回零

有人能给我指一下正确的方向吗?到目前为止,我在网上找到的所有东西都说使用了SelectMany,但我一点运气都没有

这里是字典值集合的单个课程的调试输出的屏幕截图,其中类型为“必需”


查看您的屏幕截图,“高级法语I:结构和表达”与“中世纪艺术和建筑”的键不匹配,这解释了错误的计数

相反,将
CourseEnrollmentsByStudentSQLResult
集合筛选到与字典键匹配的课程,然后选择这些匹配记录中的所有课程,最后统计“必需”的课程


如果要在程序中执行此操作,请在vivat上使用变体:

  var cnt = selections.Where(r => r.Key == "Items").SelectMany(r => r.Value).Count();
“Items”是集合中的键值。就我而言,我创建了以下集合:

  Dictionary<string, string[]> selections = new Dictionary<string, string[]>();

后来我想检查是否设置了任何值,所以我使用上述方法进行计数。它工作得很好,在初始测试中,它帮助我发现我需要在设置文本条目之前清理它们。

愚蠢的问题,但你检查过字符串比较是否返回真值吗?奇怪……字符串确实匹配,所以我不确定为什么没有得到任何结果。请参阅上面我的编辑。是的。这些是课程,我根据它们对我的成绩进行分组。我使用这些键作为标题,然后每个键都有一个值,它是CourseEnrollmentsByStudentSQLResult对象的集合,每个对象都包含一个StudentCourseSqlResult的集合。我刚刚更新了屏幕截图,以便您可以更好地查看字典及其结构。谢谢Grant。看来我是想最后一次检查钥匙,而不是第一次。屏幕截图的键是正确的,我只是扩展了其中一个节点,这样人们就可以看到类型字符串匹配了。非常感谢。:)
@result.Value.Where(r => r.Course == result.Key)
             .SelectMany(r => r.Courses)
             .Count(c => c.Type == "required");
  var cnt = selections.Where(r => r.Key == "Items").SelectMany(r => r.Value).Count();
  Dictionary<string, string[]> selections = new Dictionary<string, string[]>();
  selections.Add("Items", txtItems.Text.Replace("\n", "").Split('\r'));