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

我有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;

                }

            }

        }


手掌心
浏览 71回答 2
2回答

绝地无双

您应该在开始时将所有标志设置为 false,然后运行循环,并且仅在找到匹配项时才设置 true 标志。如果您运行当前代码,它将完成所有课程,如果匹配的课程不是最后一个,则标志将始终设置为 false,即使它已设置为 true。您还可以在找到匹配项时中断循环。所以像这样:foreach (var filteredCourse in filteredCourses)&nbsp; &nbsp; filteredCourse.AlreadyExists = false;foreach (var course in currentCourses){&nbsp; &nbsp; foreach (var filteredCourse in filteredCourses)&nbsp; &nbsp; {&nbsp; &nbsp; &nbsp; &nbsp; if ((filteredCourse.CourseNumber == course.CourseNumber) && (filteredCourse.CourseSubject == course.CourseSubject))&nbsp; &nbsp; &nbsp; &nbsp; {&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; filteredCourse.AlreadyExists = true;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; break;&nbsp; &nbsp; &nbsp; &nbsp; }&nbsp; &nbsp; }}

温温酱

您可以使用 LINQ:foreach (var f in filteredCourses){&nbsp; f.AlreadyExists = currentCourses.Any(c => (c.CourseNumber == f.CourseNumber&nbsp;&nbsp; &nbsp; && c.CourseSubject == f.CourseSubject));}
打开App,查看更多内容
随时随地看视频慕课网APP