LINQ의 OfType 메서드
LINQ의 OfType() 메서드는 특정 타입의 데이터를 추출하기 위해 사용되는 메서드입니다. 예를 들어 List의 타입이 Object인 경우 string, int, boolean 등.. 모든 타입의 값을 가질 수 있습니다. 해당 List 객체에서 string 타입의 값만 추출하고 싶은 경우 OfType() 메서드를 사용할 수 있습니다.
다음 예제는 OfType() 메서드를 사용하여 string 타입의 값을 추출하는 방법입니다.
class Program
{
static void Main(string[] args)
{
// Object 타입인 List 객체는 모든 타입의 값을 가질 수 있습니다.
List<Object> allTypeList = new List<object>()
{
"C Sharp", 100, true, "Java", 200, false, "React"
};
// OfType 메서드에 추출하려는 타입을 작성합니다.
List<string> strList = allTypeList.OfType<string>().ToList();
foreach (string strValue in strList)
Console.WriteLine(strValue);
}
}
[실행 결과]
C Sharp
Java
React
예제 1. is 연산자 사용
OfType() 메서드는 System.Linq 네임스페이스에서 지원하지만 질의 구문에서 사용할 수 없습니다. 대신 is 연산자를 사용하여 특정 타입에 해당하는 값을 추출할 수 있습니다.
다음 예제는 질의 구문과 메서드 구문에서 is 연산자를 사용하여 string 타입의 값을 추출합니다.
class Program
{
static void Main(string[] args)
{
List<Object> allTypeList = new List<object>()
{
"C Sharp", 100, true, "Java", 200, false, "React"
};
var linqQueryResult = (from item in allTypeList
where item is string
select item).ToList();
var linqMethodResult = allTypeList.OfType<string>();
Console.WriteLine("질의 구문");
foreach (string strValue in linqQueryResult)
Console.WriteLine(strValue);
Console.WriteLine("\n메서드 구문");
foreach (string strValue in linqMethodResult)
Console.WriteLine(strValue);
}
}
[실행 결과]
질의 구문
C Sharp
Java
React
메서드 구문
C Sharp
Java
React
예제 2. 질의 구문과 메서드 구문
OfType() 메서드는 질의 구문에서 직접적으로 사용할 수 없지만 특정 타입에 해당하는 값을 추출한 결과를 가지고 질의 구문을 작성하는 것은 가능합니다.
다음 예제는 OfType() 메서드를 사용하여 int 타입의 값을 추출한 결과를 질의 구문과 메서드 구문에서 사용합니다.
class Program
{
static void Main(string[] args)
{
List<Object> allTypeList = new List<object>()
{
"C Sharp", 100, true, "Java", 200, false, "React"
};
var linqQueryResult = (from item in allTypeList.OfType<int>()
where item == 100
select item).ToList();
var linqMethodResult = allTypeList.OfType<int>()
.Where(item => item == 100)
.Select(item => item);
Console.WriteLine("질의 구문");
foreach (int strValue in linqQueryResult)
Console.WriteLine(strValue);
Console.WriteLine("\n메서드 구문");
foreach (int strValue in linqMethodResult)
Console.WriteLine(strValue);
}
}
[실행 결과]
질의 구문
100
메서드 구문
100
반응형
'C# > LINQ' 카테고리의 다른 글
[C#]LINQ 교집합 구하는 방법 - Intersect 메서드 (0) | 2022.07.14 |
---|---|
[C#]LINQ 차집합 구하는 방법 - Except 메서드 (0) | 2022.07.13 |
[C#]LINQ 인덱스 가져오는 방법 (0) | 2022.07.12 |
[C#]LINQ 데이터 필터링 방법 - Where절 (0) | 2022.07.10 |
[C#]LINQ SelectMany 메서드 (0) | 2022.07.10 |
댓글