'.NET프로그래밍/C# 3.5 SP1'에 해당되는 글 118건

  1. 2009.08.20 (테스트) 체중 관리 프로그램
  2. 2009.08.19 89. LINQ - 그룹알고리즘
  3. 2009.08.19 88. LINQ - 병합
  4. 2009.08.19 87. LINQ - 합계 카운트 평균
  5. 2009.08.19 86. 지연된 실행
  6. 2009.08.19 85. 쿼리식반환값처리
  7. 2009.08.19 84. 표준쿼리연산자
  8. 2009.08.19 83. 쿼리식
  9. 2009.08.19 82. IEnumerable인터페이스
  10. 2009.08.19 81. 람다식

using System;
using System.Collections.Generic;
using System.Linq;

public class KG
{
    public int Ban { get; set; }
    public int Num { get; set; }
    public int Kg { get; set; }
    public int banAvg { get; set; }
    public int SumBanKg { get; set; }
    public int BanAvg { get; set; }
    public int TotalKg { get; set; }
    public int TotalAvg { get; set; }

    public KG()
    {
        // Empty
    }
    public KG(int ban, int num, int kg)
    {
        this.Ban = ban;
        this.Num = num;
        this.Kg = kg;
    }
}

public class 체중관리프로그램
{
    public static void Main(string[] args)
    {
        int banTemp = 0;
        int numTemp = 0;
        int kgTemp = 0;

        List<KG> lst = new List<KG>();
        KG pi;

        Console.WriteLine("자료를 입력하세요.");
        do
        {
            pi = new KG();
            Console.Write("반 : _\b");
            banTemp = Convert.ToInt32(Console.ReadLine());              // 반정보 입력
            if (banTemp > 9)                                            // 반정보 9까지 인지 확인
            {
                Console.WriteLine("반은 1~9 사이의 값이여야 합니다.");      // Error
                return;
            }
            else
            {
                pi.Ban = banTemp;
            }

            Console.Write("번호 : __\b\b");
            numTemp = Convert.ToInt32(Console.ReadLine());              // 번호 입력
            if (numTemp > 10 || numTemp < 1)                            // 1~10 인지 확인
            {
                Console.WriteLine("번호는 1~10 사이의 값이여야 합니다.");    // Error
                return;
            }
            else
            {
                pi.Num = numTemp;
            }

            Console.Write("몸무게 : __\b\b");
            kgTemp = Convert.ToInt32(Console.ReadLine());               // 몸무게 입력
            if (kgTemp < 40 || kgTemp > 200)                            // 40 ~ 200 인지 확인
            {
                Console.WriteLine("몸무게는 40~200 사이의 값이여야 합니다."); // Error
                return;
            }
            else
            {
                pi.Kg = kgTemp;
            }
            lst.Add(pi);

        } while (lst.Count < 5);       // 최대 학생수 10명 확인

        IEnumerable<IGrouping<int, KG>> q = from p in lst group p by p.Ban;     // 반별로 그룹핑
        int countBan = q.Count();                                               // 반수 확인
        foreach (IGrouping<int, KG> g in q)                                     // 반별 출력
        {
            Console.WriteLine("\r\n" + g.Key + "반\t번호\t몸무게");
            foreach (KG k in g)
            {
                Console.WriteLine("{0}\t {1}\t {2}", k.Ban, k.Num, k.Kg);       // 개인 출력
            }
            IEnumerable<int> query = from p in lst where p.Ban == g.Key select p.Kg;    // 몸무게만 선택
            pi.SumBanKg = query.Sum();                                                  // 몸무게 합산
            pi.BanAvg = (int)((double)query.Sum() / (double)query.Count() + 0.5);       // 반평균 계산 (반올림)

            pi.TotalKg += pi.BanAvg;                                                    // 전체 합산

            Console.WriteLine(g.Key + "반 평균 :" + pi.BanAvg);                        // 반평균 출력
        }
        pi.TotalAvg = (int)(((double)pi.TotalKg / (double)countBan) + 0.5);             // 전체 평균 (반올림)
        Console.WriteLine("전체평균 : " + pi.TotalAvg);
    }
}


'.NET프로그래밍 > C# 3.5 SP1' 카테고리의 다른 글

105. 파일처리  (0) 2009.08.24
90. 프로젝션  (0) 2009.08.20
89. LINQ - 그룹알고리즘  (0) 2009.08.19
88. LINQ - 병합  (0) 2009.08.19
87. LINQ - 합계 카운트 평균  (0) 2009.08.19
Posted by holland14
:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Collections;

namespace LINQ
{
    public class ProductInfo
    {
        public string Name { get; set; }
        public int Quantity { get; set; }
    }

    public class 그룹알고리즘
    {
        public static void Main()
        {
            //[1] Input
            List<ProductInfo> lst = new List<ProductInfo>()
            {
                new ProductInfo{Name="RADIO", Quantity=3},
                new ProductInfo{Name="TV", Quantity=1},
                new ProductInfo{Name="RADIO", Quantity=2},
                new ProductInfo{Name="DVD", Quantity=5}
            };

            //[2] Process
            IEnumerable<IGrouping<string, ProductInfo>> q =
                from p in lst group p by p.Name;

            //[3] Output
            foreach (IGrouping<string, ProductInfo> item in q)
            {
                Console.WriteLine("{0}", item.Key);
                foreach (ProductInfo pi in item)
                {
                    Console.WriteLine("상품:{0}, 판매량:{1}", pi.Name, pi.Quantity);
                }
            }
        }
    }
}

 

/*
Google에서 "LINQ 101" 로 검색하면
MSDN에 "101 LINQ Samples" 로 LINQ관련 문법 및 정보가 카테고리별로
정리되어 있으니 참고할 것!
*/

'.NET프로그래밍 > C# 3.5 SP1' 카테고리의 다른 글

90. 프로젝션  (0) 2009.08.20
(테스트) 체중 관리 프로그램  (0) 2009.08.20
88. LINQ - 병합  (0) 2009.08.19
87. LINQ - 합계 카운트 평균  (0) 2009.08.19
86. 지연된 실행  (0) 2009.08.19
Posted by holland14
:

using System;
using System.Linq;

public class 병합
{
    public static void Main()
    {
        int[] data1 = { 3, 5, 4 };
        int[] data2 = { 2, 1 };

        int[] result = (from o in data1 select o).Union(from t in data2 select t).OrderBy(x => x).ToArray();

        for (int i = 0; i < result.Length; i++)
        {
            Console.WriteLine("{0}", result[i]);
        }
    }
}

'.NET프로그래밍 > C# 3.5 SP1' 카테고리의 다른 글

(테스트) 체중 관리 프로그램  (0) 2009.08.20
89. LINQ - 그룹알고리즘  (0) 2009.08.19
87. LINQ - 합계 카운트 평균  (0) 2009.08.19
86. 지연된 실행  (0) 2009.08.19
85. 쿼리식반환값처리  (0) 2009.08.19
Posted by holland14
:

using System;
using System.Linq;

public class 합계카운트평균
{
    public static void Main()
    {
        // Input
        int[] data = { 3, 5, 4, 2, 1 };

        // Process
        var q = from d in data
                where d % 2 == 0
                select d;

        int sum = q.Sum(); // 합계
        int cnt = q.Count(); // 카운트
        int avg = Convert.ToInt32(q.Average()); // 평균
        int max = (from d in data select d).Max(); // 최대값
        int min = (from d in data select d).OrderByDescending(p => p).Last(); // 최소값

        // Output
        Console.WriteLine("합계 : {0}\n카운트 : {1}\n평균 : {2}", sum, cnt, avg);
        Console.WriteLine("최대값 : {0}", max);
        Console.WriteLine("최소값 : {0}", min);
    }

}

'.NET프로그래밍 > C# 3.5 SP1' 카테고리의 다른 글

89. LINQ - 그룹알고리즘  (0) 2009.08.19
88. LINQ - 병합  (0) 2009.08.19
86. 지연된 실행  (0) 2009.08.19
85. 쿼리식반환값처리  (0) 2009.08.19
84. 표준쿼리연산자  (0) 2009.08.19
Posted by holland14
:

using System;
using System.Linq;

public class 지연된실행
{
    public static void Main()
    {
        int[] data = { 3, 5, 4, 2, 1 };

        var q =
            from d in data orderby d select d;  // q는 쿼리문을 담고 있는 그릇
        foreach (var item in q)
        {
            Console.WriteLine("{0}", item); // 1, 2, 3, 4, 5
        }

        // 중간에 데이터 변경
        data[0] = 1000; // 3 -> 1000으로 값이 바뀌었음

        foreach (var item in q) // 변경된 내용으로 다시 쿼리 실행. 지연된 실행
        {
            Console.WriteLine("{0}", item); // 1, 2, 4, 5, 1000
        }
      
    }

}

/*
q는 결과값을 가지고 있는게 아니라 쿼리식(from d in data orderby d select d;)을 가지고 있다.
*/

'.NET프로그래밍 > C# 3.5 SP1' 카테고리의 다른 글

88. LINQ - 병합  (0) 2009.08.19
87. LINQ - 합계 카운트 평균  (0) 2009.08.19
85. 쿼리식반환값처리  (0) 2009.08.19
84. 표준쿼리연산자  (0) 2009.08.19
83. 쿼리식  (0) 2009.08.19
Posted by holland14
:

using System;
using System.Collections.Generic;
using System.Linq;

public class 쿼리식반환값처리
{
    public static void Main()
    {
        int[] data = { 3, 5, 4, 2, 1 };

        //[!] Process
        IEnumerable<int> q = from d in data select d; // 기본
        var query = from d in data select d; // var
        int[] sorted = (from d in data orderby d select d).ToArray(); // 결과값을 배열형으로 변환
        for (int i = 0; i < sorted.Length; i++)
       {
           Console.WriteLine("{0}", sorted[i]);
       }

        List<int> lst = (from d in data orderby d descending select d).ToList();
        for (int i = 0; i < lst.Count; i++)
        {
            Console.WriteLine("{0}", lst[i]); // 컬렉션
        }
    }
}

/*
IEnumerable대신 var키워드를 쓸 수 있다.
*/


'.NET프로그래밍 > C# 3.5 SP1' 카테고리의 다른 글

87. LINQ - 합계 카운트 평균  (0) 2009.08.19
86. 지연된 실행  (0) 2009.08.19
84. 표준쿼리연산자  (0) 2009.08.19
83. 쿼리식  (0) 2009.08.19
82. IEnumerable인터페이스  (0) 2009.08.19
Posted by holland14
:

using System;
using System.Collections.Generic;
using System.Linq;

public class 표준쿼리연산자
{
    public static bool EvenNum(int x) { return (x % 2 == 0); }
    public static void Main()
    {
        //[1] Input
        int[] data = {3, 5, 4, 2, 1};

        //[2] Process
        var q =
            //from d in data select d; // 전체
            //from d in data where d % 2 == 0 orderby d select d; // //[1] 쿼리식 //짝수
            //data.Where(EvenNum); //[2] (Where라는 확장)메서드를 통해서 짝수를 구함
            //data.Where(delegate(int x) { return (x % 2 == 0); }); //[3] 무명메서드를 통해서 짝수를 구함
            data.Where(x => x % 2 == 0); //[4] 람다식을 이용해서 짝수를 구함

        //[3] Output
        foreach (var item in q)
        {
            Console.WriteLine("{0}", item);
        }
    }

}

/*
Where라는 이름의 확장메서드를 표준쿼리연산자라고 한다.
(-->  여기서는 Where메서드가 쩜(.)을 찍었을 때 다양한 속성이 나오는 메서드임. )
*/

'.NET프로그래밍 > C# 3.5 SP1' 카테고리의 다른 글

86. 지연된 실행  (0) 2009.08.19
85. 쿼리식반환값처리  (0) 2009.08.19
83. 쿼리식  (0) 2009.08.19
82. IEnumerable인터페이스  (0) 2009.08.19
81. 람다식  (0) 2009.08.19
Posted by holland14
:

using System;
using System.Linq;
using System.Collections.Generic; //

public class Product
{
    public string Name { get; set; }    // 상품명
    public int UnitPrice { get; set; }  // 단가
}

public class 쿼리식
{
    public static void Main()
    {
        //[1] 원본 데이터 : Product형 배열
        Product[] pros = {
                             new Product{Name="닷넷", UnitPrice=1000},
                             new Product{Name="자바", UnitPrice=900}
                         };
       
        Object[] arr = {10, 20, 30};

        //[2] 쿼리식(LINQ)으로 뽑아내기 : LINQ(.NET 통합 언어 쿼리)
        IEnumerable<Product> q = from p in pros
                                 where p.Name[0] == '닷' // 조건절(if문 같은 역할)
                                 select p;

        IEnumerable<int> query = from int a in arr 
                                 where a % 4 == 0   // 4의 배수인 것만
                                 select a;

        //[3] 출력
        foreach (var item in q)
        {
            Console.WriteLine("{0}, {1}", item.Name, item.UnitPrice);
        }

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

 

/*
Google에서
" .NET 통합 언어 쿼리 " 로 검색해서(MSDN에 있음)
자주 꼭 읽어볼 것!(필독!!!)
*/

'.NET프로그래밍 > C# 3.5 SP1' 카테고리의 다른 글

85. 쿼리식반환값처리  (0) 2009.08.19
84. 표준쿼리연산자  (0) 2009.08.19
82. IEnumerable인터페이스  (0) 2009.08.19
81. 람다식  (0) 2009.08.19
80. 확장메서드  (0) 2009.08.19
Posted by holland14
:

using System;
using System.Collections.Generic; //
using System.Linq; //

public class IEnumerable인터페이스
{
    public static void Main()
    {
        // LINQ

        int[] data = {3, 5, 4, 2, 1};

        // IEnumerable 인터페이스 변수 선언/초기화 : LINQ(언어 통합 쿼리)
        IEnumerable<int> query = from d in data // data를 d로 줄여서(data를 d라는 별칭으로 하자.)
                                 where d % 2 == 0 // where조건절(d를 2로 나눈값이 0이면 -> 짝수이면)
                                 select d; // d값을 반환한다.(반환해서 query에 대입)
        // 출력
        foreach (var item in query)
       {
           Console.WriteLine("{0}", item);
       }
    }
}



/*

IEnumerable 제네릭 인터페이스
==> 지정된 형식의 컬렉션을 단순하게 반복할 수 있도록 지원하는 열거자를 노출합니다.

- IEnumerable<int>와 같이 IEnumerable에 붙어서 괄호( < > )와 괄호 안에 형식인수가 꼭 와야한다.

*/

'.NET프로그래밍 > C# 3.5 SP1' 카테고리의 다른 글

84. 표준쿼리연산자  (0) 2009.08.19
83. 쿼리식  (0) 2009.08.19
81. 람다식  (0) 2009.08.19
80. 확장메서드  (0) 2009.08.19
(테스트) 학점 계산 프로그램  (0) 2009.08.19
Posted by holland14
:

// 정수 하나를 입력받아서, 그 수를 2배하는 코드 작성
using System;

public class 람다식
{
    public static void Main()
    {
        Console.WriteLine(Plus(2)); //[1] 메서드 호출
       
        PlusHandler ph = delegate(int a) { return (a + a); }; //[2] 무명메서드 사용
        Console.WriteLine(ph(2));

        PlusHandler lambda = //[3] 람다식
            a => a + a; // (매개변수) => 실행문;
        Console.WriteLine(lambda(2));

        MinusHandler mh =
            (x, y) => x - y; // 다중 매개변수 처리시 ()사용
        Console.WriteLine(mh(3, 5)); // -2
    }

    public static int Plus(int a) // 메서드 선언
    {
        return (a + a);
    }

    public delegate int PlusHandler(int a); // 대리자 선언

    public delegate int MinusHandler(int a, int b);

}

'.NET프로그래밍 > C# 3.5 SP1' 카테고리의 다른 글

83. 쿼리식  (0) 2009.08.19
82. IEnumerable인터페이스  (0) 2009.08.19
80. 확장메서드  (0) 2009.08.19
(테스트) 학점 계산 프로그램  (0) 2009.08.19
79. 초기화자(Initializer)  (0) 2009.08.18
Posted by holland14
: