728x90
Where절
LINQ의 Where문은 원본 데이터에서 일부 조건을 만족하는 데이터를 추출해야하는 경우 사용됩니다.
예를 들자면, 아래 조건을 만족하는 데이터를 추출하기 위해 Where문을 사용할 수 있습니다.
- 이름이 "A"로 시작하는 문자열만 추출
- 급여가 4,000만원 이상인 직원을 추출
- 나이가 20세 이상인 사람을 추출
예제 1. Where절 사용 방법
Where절을 사용하는 간단한 예제입니다. int 타입의 List에서 10보다 큰 숫자를 추출합니다.
class Program
{
static void Main(string[] args)
{
List<int> liNum = new List<int>()
{
1, 3, 5, 6, 7, 9, 10
};
// 1. 질의 구문(Query Syntax)
List<int> linqQueryResult = (from num in liNum
where num > 5
select num).ToList();
// 2. 메서드 구문(Method Syntax)
List<int> linqMethodResult = liNum.Where(num => num > 5).ToList();
Console.WriteLine("질의 구문");
foreach (int num in linqQueryResult)
Console.Write(num + " ");
Console.WriteLine("\n메서드 구문");
foreach (int num in linqMethodResult)
Console.Write(num + " ");
}
}
[실행 결과]
질의 구문
6 7 9 10
메서드 구문
6 7 9 10
다음 예제는 Where절에 여러 조건문을 작성하는 방법입니다. 10보다 크고 홀수인 숫자를 추출합니다.
class Program
{
static void Main(string[] args)
{
List<int> liNum = new List<int>()
{
1, 3, 5, 6, 7, 9, 10
};
// 1. 질의 구문(Query Syntax)
List<int> linqQueryResult = (from num in liNum
where num > 5 && num % 2 != 0
select num).ToList();
// 2. 메서드 구문(Method Syntax)
List<int> linqMethodResult = liNum.Where(num => num > 5 && num % 2 != 0).ToList();
Console.WriteLine("질의 구문");
foreach (int num in linqQueryResult)
Console.Write(num + " ");
Console.WriteLine("\n메서드 구문");
foreach (int num in linqMethodResult)
Console.Write(num + " ");
}
}
[실행 결과]
질의 구문
7 9
메서드 구문
7 9
예제 2. 사용자 정의 클래스
다음 예제는 사용자 정의 클래스 타입인 List에서 Where절을 사용하는 방법입니다. 나이(Age)가 25살 이상이고 급여(Salary)가 45,000원 미만인 데이터를 추출합니다.
class Person
{
public int ID { get; set; }
public string Name { get; set; }
public int Age { get; set; }
public int Salary { get; set; }
public override string ToString()
{
return "ID: " + ID + ", Name: " + Name + ", Age: " + Age + ", Salary: " + Salary;
}
}
class Program
{
static void Main(string[] args)
{
List<Person> person = new List<Person>
{
new Person() { ID = 100, Name = "Bob", Age = 20, Salary = 30000 },
new Person() { ID = 200, Name = "Tim", Age = 25, Salary = 40000 },
new Person() { ID = 300, Name = "Charles", Age = 30, Salary = 50000 }
};
// 1. 질의 구문(Query Syntax)
List<Person> linqQueryResult = (from obj in person
where obj.Age >= 25 && obj.Salary < 45000
select obj).ToList();
// 2. 메서드 구문(Method Syntax)
List<Person> linqMethodResult =
person.Where(obj => obj.Age >= 25 && obj.Salary < 45000).ToList();
Console.WriteLine("질의 구문");
foreach (Person obj in linqQueryResult)
Console.Write(obj.ToString());
Console.WriteLine("\n메서드 구문");
foreach (Person obj in linqMethodResult)
Console.Write(obj.ToString());
}
}
[실행 결과]
질의 구문
ID: 200, Name: Tim, Age: 25, Salary: 40000
메서드 구문
ID: 200, Name: Tim, Age: 25, Salary: 40000
'개발언어 > C#' 카테고리의 다른 글
[C#] ?연산자, ??연산자 (0) | 2023.06.12 |
---|---|
[C#] 링크(LINQ)란? (0) | 2023.05.22 |
[C#] Nullable type, int? 널러블 타입 (0) | 2023.05.22 |
[C#] Nullable<T> 타입 (0) | 2023.05.22 |
[C#] Parse(string s)와 TryParse(string s, out int result) 함수 (0) | 2023.05.22 |