using System;
using System.Collections.Generic;
using System.Linq;
namespace LinqGeneric
{
#region Where
class Join
{
class Department
{
public int Id { get; set; }
public string Name { get; set; }
}
class Employee
{
public int Id { get; set; }
public string Name { get; set; }
public int DeptId { get; set; }
}
static void Main(string[] args)
{
List<Department> departments = new List<Department>();
departments.Add(new Department { Id = 1, Name = "Account" });
departments.Add(new Department { Id = 2, Name = "Sales" });
departments.Add(new Department { Id = 3, Name = "Marketing" });
departments.Add(new Department { Id = 4, Name = "Order" });
departments.Add(new Department { Id = 5, Name = "Depart" });
List<Employee> employees = new List<Employee>();
employees.Add(new Employee { DeptId = 1, Id = 1, Name = "William" });
employees.Add(new Employee { DeptId = 2, Id = 2, Name = "Miley" });
employees.Add(new Employee { DeptId = 1, Id = 3, Name = "Benjamin" });
employees.Add(new Employee { DeptId = 5, Id = 4, Name = "Hong" });
employees.Add(new Employee { DeptId = 4, Id = 5, Name = "Kim" });
var where = (from e in employees
where e.DeptId.Equals(1)
select e);
Console.WriteLine("\nDeptId 가 1인것만 표시\n");
//DeptId 가 1인것만 표시.
foreach (var e in where)
{
Console.WriteLine("직원명 = {0} , 부서Id = {1}", e.Name, e.DeptId);
}
var whereAnd = (from e in employees
where e.DeptId.Equals(1) && e.Id > 2
select e);
Console.WriteLine("\nDeptId 가 1이고 직원Id 가 2보다 큰 것만 표시\n");
//DeptId 가 1이고 직원Id 가 2보다 큰 것만 표시
foreach (var e in whereAnd)
{
Console.WriteLine("직원명 = {0} , 직원Id = {1} , 부서Id = {1}", e.Name, e.Id, e.DeptId);
}
var whereOr = (from e in employees
where e.DeptId.Equals(1) || e.Id > 2
select e);
Console.WriteLine("\nDeptId 가 1이거나 직원Id 가 2보다 큰 것만 표시\n");
//DeptId 가 1이거나 직원Id 가 2보다 큰 것만 표시
foreach (var e in whereOr)
{
Console.WriteLine("직원명 = {0} , 직원Id = {1} , 부서Id = {1}", e.Name, e.Id, e.DeptId);
}
Console.WriteLine("\n아무 키나 누르세요.");
Console.ReadKey();
}
}
#endregion
}
결과
DeptId 가 1인것만 표시
직원명 = William , 부서Id = 1
직원명 = Benjamin , 부서Id = 1
DeptId 가 1이고 직원Id 가 2보다 큰 것만 표시
직원명 = Benjamin , 직원Id = 3 , 부서Id = 3
DeptId 가 1이거나 직원Id 가 2보다 큰 것만 표시
직원명 = William , 직원Id = 1 , 부서Id = 1
직원명 = Benjamin , 직원Id = 3 , 부서Id = 3
직원명 = Hong , 직원Id = 4 , 부서Id = 4
직원명 = Kim , 직원Id = 5 , 부서Id = 5
아무 키나 누르세요.
SQL
--Where
SELECT Name, DeptId
FROM employees
WHERE DeptId = 1;
--Where and
SELECT Name, Id, DeptId
FROM employees
WHERE DeptId = 1
AND Id > 2;
--Where or
SELECT Name, Id, DeptId
FROM employees
WHERE DeptId = 1
OR Id > 2;