为了账号安全,请及时绑定邮箱和手机立即绑定

比较 2 个单独列表中的 2 个属性

比较 2 个单独列表中的 2 个属性

C#
手掌心 2022-09-04 16:39:23
我有2个单独的课程列表。1 列表是当前课程,另一个列表是过滤的课程。我想比较列表,如果课程存在或不存在,我想将过滤课程列表中的布尔值标记为真或假。下面是示例代码。var currentCourses = new List<Course>        {            new Course{CourseNumber = "101", CourseSubject = "ART"},            new Course{CourseNumber = "201", CourseSubject = "BIO"},            new Course{CourseNumber = "301", CourseSubject = "CHEM"},            new Course{CourseNumber = "401", CourseSubject = "CPSC"}        };        var filteredCourses = new List<Course>        {            new Course{CourseNumber = "101", CourseSubject = "ART"},            new Course{CourseNumber = "401", CourseSubject = "CPSC"},            new Course{CourseNumber = "501", CourseSubject = "DANC"},            new Course{CourseNumber = "701", CourseSubject = "HIST"}        };我试过了:foreach (var course in currentCourses)        {            foreach (var filteredCourse in filteredCourses)            {                if ((filteredCourse.CourseNumber === course.CourseNumber) && (filteredCourse.CourseSubject === course.CourseSubject))                {                    filteredCourse.AlreadyExists = true;                }                else                {                    filteredCourse.AlreadyExists = false;                }            }        }
查看完整描述

2 回答

?
绝地无双

TA贡献1946条经验 获得超4个赞

您应该在开始时将所有标志设置为 false,然后运行循环,并且仅在找到匹配项时才设置 true 标志。如果您运行当前代码,它将完成所有课程,如果匹配的课程不是最后一个,则标志将始终设置为 false,即使它已设置为 true。


您还可以在找到匹配项时中断循环。


所以像这样:


foreach (var filteredCourse in filteredCourses)

    filteredCourse.AlreadyExists = false;


foreach (var course in currentCourses)

{

    foreach (var filteredCourse in filteredCourses)

    {

        if ((filteredCourse.CourseNumber == course.CourseNumber) && (filteredCourse.CourseSubject == course.CourseSubject))

        {

            filteredCourse.AlreadyExists = true;

            break;

        }

    }

}


查看完整回答
反对 回复 2022-09-04
?
温温酱

TA贡献1752条经验 获得超4个赞

您可以使用 LINQ:


foreach (var f in filteredCourses)

{

  f.AlreadyExists = currentCourses.Any(c => (c.CourseNumber == f.CourseNumber 

    && c.CourseSubject == f.CourseSubject));

}


查看完整回答
反对 回复 2022-09-04
  • 2 回答
  • 0 关注
  • 70 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信