■ group ... by new { ... } 키워드 질의 형식 : 객체 컬렉션 특정 객체 속성 값의 집합 구하기 (속성 2개 이상 지정 가능)

----------------------------------------------------------------------------------------------------

Program.cs

 

using System;

using System.Collections.ObjectModel;

using System.Linq;

 

namespace TestProject

{

    /// <summary>

    /// 프로그램

    /// </summary>

    public class Program

    {

        //////////////////////////////////////////////////////////////////////////////////////////////////// Method

        ////////////////////////////////////////////////////////////////////////////////////////// Static

        //////////////////////////////////////////////////////////////////////////////// Private

 

        #region 프로그램 시작하기 - Main()

 

        /// <summary>

        /// 프로그램 시작하기

        /// </summary>

        private static void Main()

        {

            ObservableCollection<Employee> collection = Employee.GetCollection();

 

            var result = from    item in collection

                         group   item by new { item.ID, item.Sex }

                         into    newItem1

                         select  newItem1.FirstOrDefault()

                         into    newItem2

                         orderby newItem2.ID, newItem2.Sex

                         select  newItem2;

 

            foreach(var item in result)

            {

                Console.WriteLine(string.Format("{0}, {1}", item.ID, item.Sex));

            }

        }

 

        #endregion

    }

}

 

Employee.cs

 

using System.Collections.ObjectModel;

 

namespace TestProject

{

    /// <summary>

    /// 직원

    /// </summary>

    public class Employee

    {

        //////////////////////////////////////////////////////////////////////////////////////////////////// Property

        ////////////////////////////////////////////////////////////////////////////////////////// Public

 

        #region ID - ID

 

        /// <summary>

        /// ID

        /// </summary>

        public string ID { get; set; }

 

        #endregion

 

        #region 성명 - Name

 

        /// <summary>

        /// 성명

        /// </summary>

        public string Name { get; set; }

 

        #endregion

 

        #region 성별 - Sex

 

        /// <summary>

        /// 성별

        /// </summary>

        public string Sex { get; set; }

 

        #endregion

 

        //////////////////////////////////////////////////////////////////////////////////////////////////// Method

        ////////////////////////////////////////////////////////////////////////////////////////// Static

        //////////////////////////////////////////////////////////////////////////////// Public

 

        #region 컬렉션 구하기 - GetCollection()

 

        /// <summary>

        /// 컬렉션 구하기

        /// </summary>

        /// <returns>컬렉션</returns>

        public static ObservableCollection<Employee> GetCollection()

        {

            ObservableCollection<Employee> collection = new ObservableCollection<Employee>();

 

            for(int i = 0; i < 100000; i++)

            {

                collection.Add(new Employee() { ID = (i % 5).ToString(), Name = "직원" + i.ToString(), Sex = (i % 10 == 1 ? "남" : "여")});

            }

 

            return collection;

        }

 

        #endregion

    }

}

----------------------------------------------------------------------------------------------------

Posted by 사용자 icodebroker
TAG

댓글을 달아 주세요