我正在尝试获取字典值集合的计数,其中集合项的字段与集合中的键匹配,以及类型。如何获取C#中字典值集合的计数
所以我的采集看起来像这样,注意初始化对象,这仅仅是伪代码:
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对象的集合。这是我试图根据两个条件计算的清单。
先说当然,这是在字典中的字符串键,配StudentCoursesSQLResult的课程,然后我需要在StudentCoursesSQLResult。键入筛选。
这里是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,但我没有任何运气。
以下是字典值集合的单个课程的调试输出截图,其中Type为“required”。
愚蠢的问题,但你有检查你的字符串比较实际上返回true? – 2015-03-25 03:06:42
我复制了你的代码,并在非MVC环境中添加了一些记录(只是将结果写入控制台),并且它按预期工作。我认为你的代码的LINQ语句部分没有什么问题,假设数据很好并且匹配正确。 – 2015-03-25 03:13:04
奇怪......这些字符串确实匹配,所以我不确定为什么我没有得到任何结果。看到我上面的编辑。 – 2015-03-25 03:14:57