-
내부조인 :
-기준 데이터A, 비교 데이터 중, A와 B의 교집합
-기준데이터 A에 존재하지만 B에 존재하지 않은 데이터는 조인된 결과에서 누락 됩니다.
from a in A
join b in B on a.XXX equals b.YYYY
외부조인:
외부 조인은 기본데이터에 들어 있는 모든 데이터는 포함되어 있다.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Join
{
class Program
{
class Profile
{
public string Name { get; set; }
public int Height { get; set; }
}
class Product
{
public string Title { get; set; }
public string Star { get; set; }
}
static void Main(string[] args)
{
Profile[] arrProfile =
{
new Profile() {Name="정우성",Height=180 },
new Profile() {Name="김태희",Height=158},
new Profile() {Name="고현정",Height=172 },
new Profile() {Name="이운세",Height=178},
new Profile() {Name="하아",Height=171 },
new Profile() {Name="정재형",Height=170}
};
Product[] arrProduct =
{
new Product() {Title="비트", Star="정우성" },
new Product() {Title="CF 다수",Star="김태희"},
new Product() {Title="아이리스",Star="김태희" },
new Product() {Title="모래시계",Star="고현정"},
new Product() {Title="솔로 예찬",Star="이문세" }
};
//내부조인
var listProfile =
from profile in arrProfile
join product in arrProduct on profile.Name equals product.Star
select new
{
Name = profile.Name,
Work = product.Title,
Height = profile.Height
};
Console.WriteLine("------내부 조인 결과------");
foreach (var profile in listProfile)
{
Console.WriteLine("이름:{0}, 작품:{1}, 키:{2}cm", profile.Name, profile.Work, profile.Height);
}
listProfile =
from profle in arrProfile
join product in arrProduct on profle.Name equals product.Star into ps
from product in ps.DefaultIfEmpty(new Product() { Title = "" })
select new
{
Name = profle.Name,
Work = product.Title,
Height = profle.Height
};
Console.WriteLine("------외부 조인 결과------");
foreach (var profile in listProfile)
{
Console.WriteLine("이름:{0}, 작품:{1}, 키:{2}cm", profile.Name, profile.Work, profile.Height);
}
Console.ReadKey();
}
}
}
using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading.Tasks;namespace Join{class Program{class Profile{public string Name { get; set; }public int Height { get; set; }}class Product{public string Title { get; set; }public string Star { get; set; }}static void Main(string[] args){Profile[] arrProfile ={new Profile() {Name="정우성",Height=180 },new Profile() {Name="김태희",Height=158},new Profile() {Name="고현정",Height=172 },new Profile() {Name="이운세",Height=178},new Profile() {Name="하아",Height=171 },new Profile() {Name="정재형",Height=170}};Product[] arrProduct ={new Product() {Title="비트", Star="정우성" },new Product() {Title="CF 다수",Star="김태희"},new Product() {Title="아이리스",Star="김태희" },new Product() {Title="모래시계",Star="고현정"},new Product() {Title="솔로 예찬",Star="이문세" }};//내부조인var listProfile =from profile in arrProfilejoin product in arrProduct on profile.Name equals product.Starselect new{Name = profile.Name,Work = product.Title,Height = profile.Height};Console.WriteLine("------내부 조인 결과------");foreach (var profile in listProfile){Console.WriteLine("이름:{0}, 작품:{1}, 키:{2}cm", profile.Name, profile.Work, profile.Height);}listProfile =from profle in arrProfilejoin product in arrProduct on profle.Name equals product.Star into psfrom product in ps.DefaultIfEmpty(new Product() { Title = "" })select new{Name = profle.Name,Work = product.Title,Height = profle.Height};Console.WriteLine("------외부 조인 결과------");foreach (var profile in listProfile){Console.WriteLine("이름:{0}, 작품:{1}, 키:{2}cm", profile.Name, profile.Work, profile.Height);}Console.ReadKey();}}}using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Join
{
class Program
{
class Profile
{
public string Name { get; set; }
public int Height { get; set; }
}
class Product
{
public string Title { get; set; }
public string Star { get; set; }
}
static void Main(string[] args)
{
Profile[] arrProfile =
{
new Profile() {Name="정우성",Height=180 },
new Profile() {Name="김태희",Height=158},
new Profile() {Name="고현정",Height=172 },
new Profile() {Name="이운세",Height=178},
new Profile() {Name="하아",Height=171 },
new Profile() {Name="정재형",Height=170}
};
Product[] arrProduct =
{
new Product() {Title="비트", Star="정우성" },
new Product() {Title="CF 다수",Star="김태희"},
new Product() {Title="아이리스",Star="김태희" },
new Product() {Title="모래시계",Star="고현정"},
new Product() {Title="솔로 예찬",Star="이문세" }
};
//내부조인
var listProfile =
from profile in arrProfile
join product in arrProduct on profile.Name equals product.Star
select new
{
Name = profile.Name,
Work = product.Title,
Height = profile.Height
};
Console.WriteLine("------내부 조인 결과------");
foreach (var profile in listProfile)
{
Console.WriteLine("이름:{0}, 작품:{1}, 키:{2}cm", profile.Name, profile.Work, profile.Height);
}
listProfile =
from profle in arrProfile
join product in arrProduct on profle.Name equals product.Star into ps
from product in ps.DefaultIfEmpty(new Product() { Title = "" })
select new
{
Name = profle.Name,
Work = product.Title,
Height = profle.Height
};
Console.WriteLine("------외부 조인 결과------");
foreach (var profile in listProfile)
{
Console.WriteLine("이름:{0}, 작품:{1}, 키:{2}cm", profile.Name, profile.Work, profile.Height);
}
Console.ReadKey();
}
}
}
'c#' 카테고리의 다른 글
out:출력 전용 매개변수 (0) 2017.05.06 데이터 타입 (0) 2017.05.06 LINQ-Group BY (0) 2017.05.06 C# datagridView 옵션 (0) 2017.05.02 File ReadAllLines (0) 2017.04.15