我正在尝试获取字典的值集合的计数,其中集合项的字段与集合中的键以及类型匹配。
所以我的收藏看起来像这样,注意对象已初始化,这只是伪代码:
var results = Dictionary<string, List<CourseEnrollmentsByStudentSQLResult>();
现在,CourseEnrollmentsByStudentSQLResult是一个数据传输对象,它映射到我的查询返回的行。
public class CourseEnrollmentsByStudentSQLResult
{
public int StudentID { get; set; }
public string FirstName { get; set; }
public string LastName { get; set; }
public string College { get; set; }
public int CollegeId { get; set; }
public string Prefix { get; set; }
public string CourseNumber { get; set; }
public string Course { get; set; }
public int CourseId { get; set; }
public string Program { get; set; }
public string Term { get; set; }
public string Status { get; set; }
public List<StudentCoursesSQLResult> Courses { get; set; }
}
您会注意到,我的CourseEnrollmentsByStudentSQLResult类也有一个StudentCoursesSQLResult对象的集合。这是我要计算的列表,基于两个条件。
首先,该课程(即字典中的字符串KEY)与StudentCoursesSQLResult的课程匹配,然后我需要对StudentCoursesSQLResult .Type进行过滤。
这是StudentCoursesSQLResult类:
public class StudentCoursesSQLResult
{
public int StudentID { get; set; }
public int Position { get; set; }
public string Prefix { get; set; }
public string CourseNumber { get; set; }
public string Course { get; set; }
public string Type { get; set; }
}
现在,要获取计数,我要遍历字典并为每个键输出标题,这是我尝试输出字典值集合的计数的地方。
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>
}
但是由于某种原因,当我知道不应该返回零时,它返回零。
有人能指出我正确的方向吗?到目前为止,我在网上找到的所有内容都说可以使用SelectMany,但是我没有任何运气。
这是该词典的值集合的一门课程的调试输出的屏幕截图,其中“类型”为“必需”。
查看您的屏幕截图,“高级法语I:结构和表达”与“中世纪艺术和建筑”的键不匹配,该键说明了错误的计数。
而是,将CourseEnrollmentsByStudentSQLResult
集合过滤为与字典关键字匹配的那些,然后在那些匹配的记录中选择所有课程,最后对“必需”的课程进行计数。
@result.Value.Where(r => r.Course == result.Key)
.SelectMany(r => r.Courses)
.Count(c => c.Type == "required");
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句