[C#] LINQ Join

c# 2023. 2. 11. 23:51
728x90
namespace ConsoleApp1
{
    public class Student
    {
        public string Name { get; set; }
        public Course CourseTaken { get; set; }
    }
    public class Course
    {
        public string Title { get; set;}
        public int CreditHours { get; set;}
    }
    internal class Program
    {
        static void Main(string[] args)
        {
            JoinOpertaor();
        }

        public static  void JoinOpertaor()
        {
            Course hci = new Course
            {
                Title = "검은 오리",
                CreditHours = 10
            };
            Course iis = new Course
            {
                Title = "벤자민 버튼의 시간은 거꾸로 간다",
                CreditHours = 10
            };

            Student carol = new Student
            {
                Name = "벤자민",
                CourseTaken = hci
            };
            Student riri = new Student
            {
                Name = "장백호",
                CourseTaken = iis
            };
            List<Course> courses = new List<Course>
            {
                hci, iis
            };
            List<Student> students = new List<Student>
            {
                carol, riri
            };

            var query = courses.Join(
                students, courses => courses, students => students.CourseTaken, (courses, students) => new
                {
                    StudentName = students.Name,
                    CoursesTaken = courses.Title
                });

            foreach (var item in query)
            {
                Console.WriteLine("{0}-{1}", item.StudentName, item.CoursesTaken);
            }

            // 쿼리식
            var query2 =
                from c in courses
                join s in students on c.Title equals s.CourseTaken.Title
                select new
                {
                    StuentName = s.Name,
                    CourseTaken = c.Title
                };

            foreach (var item in query2)
            {
                Console.WriteLine("{0}-{1}", item.StuentName , item.CourseTaken);
            }
        }
    }
}

LINQ에는 Join과 GroupJoin이라는 두가지 연산자가 있다

courses와 students에 Join 연사자를 적용해 무명 형식의 결과를 얻는다

 

728x90
Posted by 바르마스
,