.Select에 대한 LINQ/LAMBDA 질문 (Newby Learning 3.0)
문제
나는 C#3.0의 새로운 물건을 가지고 놀고 있으며이 코드가 있습니다 (주로 가져 왔습니다. MSDN) 그러나 나는 진실, 거짓, 진실한 것만 할 수 있으며 실제 가치가 아닙니다.
int[] numbers = { 5, 4, 1, 3, 9, 8, 6, 7, 2, 0 };
var oddNumbers = numbers.Select(n => n % 2 == 1);
Console.WriteLine("Numbers < 5:");
foreach (var x in oddNumbers)
{
Console.WriteLine(x);
}
정수 목록을 표시하려면 어떻게 수정 할 수 있습니까?
해결책
"선택"을 "여기서"로 변경하십시오.
int[] numbers = { 5, 4, 1, 3, 9, 8, 6, 7, 2, 0 };
var oddNumbers = numbers.Where(n => n % 2 == 1);
Console.WriteLine("Odd Number:");
foreach (var x in oddNumbers)
{
Console.WriteLine(x);
}
"SELECT"메소드는 각 요소에 대한 새로운 LAMBDA 결과 목록을 작성하고 있습니다 (true/false). "여기서"방법은 람다를 기반으로 필터링됩니다.
C#에서는이 구문을 사용할 수도 있습니다.
var oddNumbers = from n in numbers
where n % 2 == 1
select n;
컴파일러가 다음으로 변환됩니다.
var oddNumbers = numbers.Where(n => n % 2 == 1).Select(n => n);
다른 팁
numbers.Select(n => n % 2 == 1);
이것을 변경하십시오
numbers.Where(n => n % 2 == 1);
Select는 한 가지를 "변환"하는 것입니다. 따라서이 경우 "n을"n % 2 == 1 "(부울)로 변환합니다. 따라서 모든 진실과 허위를 얻습니다.
일반적으로 사물에 속성을 얻는 데 사용됩니다. 예를 들어 목록이있는 경우 Person
물체, 그리고 당신은 그들의 이름을 얻고 싶었습니다.
var listOfNames = listOfPeople.Select( p => p.Name );
당신은 이것을 그렇게 생각할 수 있습니다.
- 다음 방법을 사용하여 사람들의 목록을 문자열 목록으로 변환하십시오. (p => p.name)
컬렉션의 하위 집합을 ""필터링 "으로 선택한"( "필터링"에서 선택)하려면 어디에서 사용해야합니다.
끔찍한 이름 지정에 감사드립니다
제휴하지 않습니다 StackOverflow