2014년 3월 24일 월요일

41. 닷넷C# LYNQ(링크) – C#LYNQJOIN,내부조인,외부조인,DefaultIfEmpty, [닷넷C#교육/ADO.NET강좌/ASP.NET교육잘하는곳/C#,ASP.NET교육추천/닷넷실무교육/.NET,C#/ADO.NET교육/닷넷학원/ASP.NET실무교육] 1. 내부조인 내부조인은 교집합과 비슷하며 첫 번째 데이터원본의 특정 필드와 두 번째 데이터원본의 특정 필드를 비교하여 일치하는 데이터만 반환한다. [형식] From a in A Join b in B on a.XXX = b.XXX on절의 조인조건은 동등비교(equals)만 가능하다. 2. 외부조인 LYNQ는 외부조인 중 왼쪽조인(Left Outer Join)만 지원한다. 먼저 조인절을 이용하여 조인수행 후 결과를 임시 컬렉션에 저장하고 이 임시컬렉션에 대해 DefaultIfEmpty 연산을 수행해서 비어있는 조인결과에 빈 값을 채운다. DefaultIfEmpty 연산을 거친 임시 컬렉션에서 from 절을 통해 변수를 뽑아내고 비 범위변수와 기준데이터 원본에서 뽑아낸 범위변수를 이용하여 결과를 추출한다. [예제] using System; using System.Linq; using System.Collections.Generic; namespace from { class Customer { public string Name { get; set; } public int Age { get; set; } } class Sale { public string Name { get; set; } public string Goods { get; set; } } class Onj { static void Main(string[] args) { Customer[] customer = { new Customer() {Name="ONJSYSTEM", Age=8}, new Customer() {Name="오엔제이프로그래밍실무학원", Age=6}, new Customer() {Name="오라클자바커뮤니티", Age=13} }; Sale[] sale = { new Sale() {Name="ONJSYSTEM", Goods="볼펜"}, new Sale() {Name="오엔제이프로그래밍실무학원", Goods="연필"}, }; //내부조인("오라클자바커뮤니티"는 매출내역이 없으므로 출력되지 않는다") var result1 = from c in customer join s in sale on c.Name equals s.Name select new { Name = c.Name, Age = c.Age, Goods = s.Goods }; foreach (var x in result1) { Console.WriteLine("이름 : {0}, 나이 : {1}, 상품 : {2}", x.Name, x.Age, x.Goods); } //외부조인 result1 = from c in customer join s in sale on c.Name equals s.Name into tmp from s in tmp.DefaultIfEmpty(new Sale() { Goods = "상품없음" }) select new { Name = c.Name, Age = c.Age, Goods = s.Goods }; Console.WriteLine("-------------------------------------------------------------"); foreach (var x in result1) { Console.WriteLine("이름 : {0}, 나이 : {1}, 상품 : {2}", x.Name, x.Age, x.Goods); } } } } [결과] 이름 : ONJSYSTEM, 나이 : 8, 상품 : 볼펜 이름 : 오엔제이프로그래밍실무학원, 나이 : 6, 상품 : 연필 ------------------------------------------------------------- 이름 : ONJSYSTEM, 나이 : 8, 상품 : 볼펜 이름 : 오엔제이프로그래밍실무학원, 나이 : 6, 상품 : 연필 이름 : 오라클자바커뮤니티, 나이 : 13, 상품 : 상품없음 [출처] 오라클자바커뮤니티 - http://www.oraclejavanew.kr/bbs/board.php?bo_table=LecCsharp&wr_id=171 자바 오라클/빅데이터 아이폰/안드로이드 닷넷/WPF 표준웹/HTML5 채용/취업무료교육 초보자코스 [기업100%환급]Spring ,MyBatis,Hibernate실무과정 총 5일 40시간 03-31 [기업100%환급]자바기초에서 JDBC, Servlet/JSP까지 총 5일 40시간 04-07 자바기초에서JSP,Ajax,jQuery,Spring3.2,MyBatis까지 총 24일 72시간 03-28 자바웹(JSP,Spring,MyBatis,XPlatform)프로젝트과정 총 40일 120시간 04-07 Spring3.X, MyBatis, Hibernate실무과정 총 12일 36시간 04-08 자바기초에서JSP,Ajax,jQuery,Spring3.2,MyBatis까지 총 10일 70시간 03-29 [주말저녁]자바기초에서JSP,Servlet,Ajax,jQUERY,스프링,마이바티스,하이버네이트 총 18일 72시간 03-29 Spring3.X, MyBatis, Hibernate실무과정 총 5일 35시간 04-05

41. 닷넷C# LYNQ(링크) – C#LYNQJOIN,내부조인,외부조인,DefaultIfEmpty, [닷넷C#교육/ADO.NET강좌/ASP.NET교육잘하는곳/C#,ASP.NET교육추천/닷넷실무교육/.NET,C#/ADO.NET교육/닷넷학원/ASP.NET실무교육]


1. 내부조인

내부조인은 교집합과 비슷하며 첫 번째 데이터원본의 특정 필드와 두 번째 데이터원본의 특정 필드를 비교하여 일치하는 데이터만 반환한다.

[형식]

From a in A
Join b in B on a.XXX = b.XXX

on절의 조인조건은 동등비교(equals)만 가능하다.


2. 외부조인

LYNQ는 외부조인 중 왼쪽조인(Left Outer Join)만 지원한다. 먼저 조인절을 이용하여 조인수행 후
결과를 임시 컬렉션에 저장하고 이 임시컬렉션에 대해 DefaultIfEmpty 연산을 수행해서 비어있는 조인결과에 빈 값을 채운다. DefaultIfEmpty 연산을 거친 임시 컬렉션에서 from 절을 통해 변수를 뽑아내고 비 범위변수와 기준데이터 원본에서 뽑아낸 범위변수를 이용하여 결과를 추출한다.


[예제]

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

namespace from
{
    class Customer
    {
        public string Name { get; set; }
        public int Age { get; set; }
    }

    class Sale
    {
        public string Name { get; set; }
        public string Goods { get; set; }
    }


    class Onj
    {
        static void Main(string[] args)
        {
             Customer[] customer = {
                new Customer() {Name="ONJSYSTEM", Age=8},
                new Customer() {Name="오엔제이프로그래밍실무학원",  Age=6},
                new Customer() {Name="오라클자바커뮤니티",  Age=13}
            };

             Sale[] sale = {
                new Sale() {Name="ONJSYSTEM", Goods="볼펜"},
                new Sale() {Name="오엔제이프로그래밍실무학원", Goods="연필"},
            };


            //내부조인("오라클자바커뮤니티" 매출내역이 없으므로 출력되지 않는다")
            var result1 = from c in customer
                           join s in sale on c.Name equals s.Name                      
                           select new
                           {
                              Name = c.Name,
                              Age = c.Age,
                              Goods = s.Goods
                           };

            foreach (var x in result1)
            {
                 Console.WriteLine("이름 : {0}, 나이 : {1}, 상품 : {2}", x.Name, x.Age, x.Goods);
            }

           
            //외부조인
            result1 = from c in customer
                      join s in sale on c.Name equals s.Name into tmp
                      from s in tmp.DefaultIfEmpty(new Sale() { Goods = "상품없음" })
                      select new
                      {
                          Name = c.Name,
                          Age = c.Age,
                          Goods = s.Goods
                      };

            Console.WriteLine("-------------------------------------------------------------");
            foreach (var x in result1)
            {
                Console.WriteLine("이름 : {0}, 나이 : {1}, 상품 : {2}", x.Name, x.Age, x.Goods);
            }
        }
    }
}




[결과]

이름 : ONJSYSTEM, 나이 : 8, 상품 : 볼펜
이름 : 오엔제이프로그래밍실무학원, 나이 : 6, 상품 : 연필
-------------------------------------------------------------
이름 : ONJSYSTEM, 나이 : 8, 상품 : 볼펜
이름 : 오엔제이프로그래밍실무학원, 나이 : 6, 상품 : 연필
이름 : 오라클자바커뮤니티, 나이 : 13, 상품 : 상품없음
 


댓글 없음:

댓글 쓰기