... | ... | @@ -385,10 +385,36 @@ LINQ 쿼리는 컴파일 될 때 LINQ 확장 메서드로 자동 변경되서 |
|
|
|확장 메서드 표현|people.Select( (elem) => elem );|
|
|
|
|일반 메서드 표현|IEnumerable<Person> SelectFunc(List<Person> people)<br>{<br> foreach (var item in people)<br> {<br> yield return item;<br> }<br>}<br>|
|
|
|
|
|
|
LINQ 확장 메서드 중 Where()과 FirstOrDefault()의 예제 코드이다.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
## Where 메서드
|
|
|
|
|
|
|
|
|
```c#
|
|
|
//public static IEnumerable<TSource> Where<TSource>(
|
|
|
//this IEnumerable<TSource> source, Func< TSource, bool> predicate)
|
|
|
//Where 메서드는 IEnumerable<T> 인터페이스를 지원하는 모든 타입에 사용 가능하다.
|
|
|
//predicate가 True를 리턴하는 요소만 모아서 IEnumerable<T>로 열거형을 반환한다.
|
|
|
IEnumerable<int> enumList = list.Where((element) => element % 2 == 0);
|
|
|
Array.ForEach(enumList.ToArray(), (element) => { Console.WriteLine(element); });
|
|
|
|
|
|
var enumList2 = list.Where((element) => element % 2 == 1);
|
|
|
enumList2.ToList<int>().ForEach(n => Console.WriteLine("홀수는 = " + n));
|
|
|
|
|
|
//public static TSource FirstOrDefault<TSource>(
|
|
|
//this IEnumerable<TSource> source)
|
|
|
//FirstOrDefault 메서드는 조건식에 맞는 처음 요소를 찾는 경우에 사용한다.
|
|
|
//조건에 맞는 요소가 여러 개일 경우 첫 요소만 반환하며, 하나도 없을 경우는 기본값(보통 null)을 반환한다.
|
|
|
List<string> stringList = new List<string>() { "Apple", "AOA", "Banana", "Grape" };
|
|
|
var result = stringList.Where((element) => element.StartsWith("A")).FirstOrDefault();
|
|
|
Console.WriteLine("A로 시작하는 첫 번째 요소는 : " + result);
|
|
|
|
|
|
var result2 = stringList.Where((element) => element.StartsWith("C")).FirstOrDefault();
|
|
|
//그냥 null로 체크하는 것 보다는 default(type)으로 체크하는게 더 안전하다.
|
|
|
//밸류 타입의 경우는 null로 체크하면 에러를 반환한다.
|
|
|
if (result2 == default(string))
|
|
|
{
|
|
|
Console.WriteLine("C로 시작하는 요소가 없습니다.");
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
Console.WriteLine("C로 시작하는 첫 번째 요소는 : " + result2);
|
|
|
}
|
|
|
``` |
|
|
\ No newline at end of file |