0

次のプログラムがあります。また、たとえば教室で教室を見つけたいのですが、どのようにすればよいか教えていただければ幸いです。たとえば、教室に既に追加したコースを追加したいのですが、私は c# とリスト (私は C から来ました) はまったく新しいので、本当に助けていただければ幸いです。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Maman15cs

{


public class ClassRoom
{

    public string ClassNumber;
    public int NumberofPlaces;
    public int[,] DayandHour = new int[6,8];

    public static ClassRoom AddClassRoom()
    {
        var classRoom = new ClassRoom();
        Console.WriteLine("Enter the Class number, the Number of places\n");
        classRoom.ClassNumber = Console.ReadLine().ToString();
        classRoom.NumberofPlaces = int.Parse(Console.ReadLine());
        Console.WriteLine("Good, now enter the Day(1, 2, 3, 4, 5, 6) and after that you put the courses' number that are that day (In Order)");
        for (int i = 0; i < 6; i++)
        {
            for (int j = 0; j < 8; j++)
            {

               classRoom.DayandHour[i,j] = int.Parse(Console.ReadLine());

            }

        }
        return classRoom;
    }

    public static ClassRoom AddCourseInClassroom(ClassRoom classroom)
    {
        for (int i = 0; i < 6; i++)
        {
            for (int j = 0; j < 8; j++)
            {

            }
        }
    }
}


public class Course
    {
        public string CourseName;
        public int CourseNumber;
        public int StudentsNumber;
        public string TeacherName;
        public string ClassNumber;



  public static Course AddCourse()
    {
        Course newCourse = new Course(); 
        Console.WriteLine("Enter the Course's name, course's number, students number, teacher's name, and class' number\n");
        newCourse.CourseName = Console.ReadLine().ToString();
        newCourse.CourseNumber = int.Parse(Console.ReadLine());
        newCourse.StudentsNumber = int.Parse(Console.ReadLine());
        newCourse.TeacherName = Console.ReadLine().ToString();
        newCourse.ClassNumber = Console.ReadLine().ToString();
        return newCourse;
    }
}

public class Program
{

     void Main()
    {
        var course = new List<Course>();
        var classroom = new List<ClassRoom>();



        int actionChoice;


         while(true){
         Console.WriteLine("What do you want to do? (Enter number): \n  1) Add a new Course \n 2)Add a new class room \n 3)Add an existing course to an existing classroom \n 4)Read the information of a specific classroom \n 5)Read the information of all the classrooms \n 6)Read the information of a specific course \n 7)Delete a specific course \n 8)Update courses in the Time Table \n 9)Exit the program  \n");
         actionChoice = int.Parse(Console.ReadLine());

         switch (actionChoice)
         {

             case 1: //Add a new Course

                 var new_course =  Course.AddCourse();                     
                 course.Add(new_course);

               break;

             case 2:

                var new_classRoom = ClassRoom.AddClassRoom();
                classroom.Add(new_classRoom);

               break;

             case 3:

               Console.WriteLine("Enter the course's number and the classroom's number");
               var courseNumber = int.Parse(Console.ReadLine());
               var classroomNumber = int.Parse(Console.ReadLine());

               course.Find(courseNumber);




               break;

             case 9:

               return;



         }


            }
        }
    }
}
4

3 に答える 3

2

LINQ を使用できる場合、これは非常に簡単です。

var foundCourse = course.FirstOrDefault(c => c.CourseNumber == courseNumber)

if (foundCourse != null)
{
  // You're now interacting with the course we found
} 

LINQ を使用できない場合はお知らせください。効率の悪い/クリーンな方法を説明します。

編集して別の方法を示します。より単純な方法 (LINQ を使用しない) の場合は、for ループまたは foreach ループで実行できます。例えば:

private Course FindCourse(int courseNumber, List<Course> courses)
{
    foreach(Course course in courses)
    {
        if(course.CourseNumber == courseNumber)
            return course;
    }

    // Not found, return null
    return null;
}    
于 2013-08-14T15:39:32.290 に答える
1

あなたはこれを行うことができます

List<ClassRoom> result = yourlist.Where(x=>x.CourseName=="yourdesidredcourse").ToList();
于 2013-08-14T15:38:58.443 に答える
1

C# のリストの API について知りたい場合は、このリンクをお勧めします。ただし、基本的には、Where メソッドと述語 (要素が特定の基準を満たすかどうかを示す bool を返すメソッド) を使用して簡単に検索できます。検討:

var matches = courses.Where( e => e.CourseNumber == providedCourseNumber );

このスニペットの読み取り: 一致は、CourseNumber が providedCourseNumber と等しい Courses の IEnumerable になります。

于 2013-08-14T15:41:43.563 に答える