Windows_/Windows_C# & App

LINQ를 이용한 객체 데이터 정렬

sosal 2014. 7. 24. 09:57
반응형

/*

 * http://sosal.kr/

 * made by so_Sal

 */

 

gene이라는 클레스에는 r1, r2라는 데이터가 있습니다.

단순한 배열이었다면 sort 함수로 빠르게 처리하면 되지만 클레스인경우 그렇지 못합니다.

따라서 이러한 객체들을 구현하기 쉬운 버블소트정도로 리스트를 새로 만드는 경우가 많은데

LINQ를 사용하면 필요한 데이터만 정렬해서 쉽게 뽑을 수 있습니다.

 

아래 예제는 gene이라는 클레스를 10개 생성하여 r1, r2 2개의 데이터를 무작위로 집어넣고

r1을 기준으로 객체들을 정렬하여 r1, r2 모두를 출력하는것입니다.

 

class gene

{

    public int r1;

    public int r2;

 

    public gene(int i, int j)

    {

        r1 = i;

        r2 = j;

    }

}//r1, r2 변수와 생성자 함수를 담은 객체

 

 

class Program

{

    static void Main(string[] args)

    {

        Random rand = new Random();

        gene[] gs = new gene[10];


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

        {

                gs[i] = new gene((int)rand.Next(0, 1000), (int)rand.Next(0, 1000));

        }//데이터 무작위 생성

 

        //////////////////////////////////////////// example 1

        var result1 = from g in gs

                          orderby g.r1

                          select g;

 

        foreach (gene in result1)

        {

            Console.Write("{0} {1}\n", i.r1, i.r2);

 

        Console.WriteLine();

 

 

        //////////////////////////////////////////// example 2

        var result2 = gs.OrderBy(c => c.r1).ToList();

        foreach (gene i in result2)

        {

            Console.Write("{0} {1}\n", i.r1, i.r2);

        } Console.WriteLine();

        ////////////////////////////////////////////

    }

}