2008-10-28 6 views
8

나는 C# 3.0의 새로운 내용을 가지고 노는 중이며 (대부분은 MSDN에서 가져온)이 코드를 가지고 있지만 사실, 거짓, 참을 수있다. 실제 값이 아닙니다 :Linq/lambda question .Select (newby learning 3.0)

 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); 
     } 

정수 목록을 표시하려면 어떻게해야합니까?

+0

숫자 n % 2 == 1은 숫자 <5와 관련이 없습니다. –

답변

25
은 "선택"방법은 각 요소에 대해 람다 결과의 새 목록을 만들고있다 "경우"

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); 
    } 

(참/거짓)에 "선택"당신의 변경

. "Where"메서드는 람다를 기반으로 필터링합니다.

C#에서

, 당신은 또한 당신이 찾을 수 있습니다이 구문을 사용할 수 있습니다 명확 :에

var oddNumbers = numbers.Where(n => n % 2 == 1).Select(n => n); 
+0

Thx 작동 여부, 데이터를 선택하지 않은 경우 선택 대상은 무엇입니까? –

+1

데이터를 선택합니다. 부울 값인 람다 결과를 선택합니다. – TheSoftwareJedi

+0

thx !! 이제 알겠다. –

5
numbers.Select(n => n % 2 == 1); 

변경이 : 컴파일러가 번역

 var oddNumbers = from n in numbers 
         where n % 2 == 1 
         select n; 

numbers.Where(n => n % 2 == 1); 

"선택"은 한 가지를 "변환"하는 것입니다. 따라서이 경우에는 "n % 2 == 1"(부울) 인 "Converting"이됩니다. 따라서 모든 참과 거짓을 얻습니다.

일반적으로 사물에 속성을 가져 오는 데 사용됩니다.

  • 은으로 사람들의 목록을 변환 : 예를 들어 당신이

    var listOfNames = listOfPeople.Select(p => p.Name); 
    

    당신과 같이 생각할 수 할 거라고, 당신은 Person 개체의 목록을 가지고, 당신은 그들의 이름을 얻고 싶었다 경우 (p => p.Name)

컬렉션의 하위 집합을 "선택"(단어의 "필터링"의미로)하려면 "Where"를 사용해야합니다. .

끔찍한 이름 지정에 대한 감사의 말씀

+0

끔찍한 이름이 있습니까? "선택"은 "Where"가 필터링을 선택합니다. SQL과 동일 ... – TheSoftwareJedi

+0

SQL과 동일하지만 '선택'에 대한 맵을 사용하고 'where'에 대해 선택하는 다른 모든 프로그래밍 언어 (루비, 리스프, 파이썬 등)와는 다릅니다. –

+0

Thx에 대한 정보 선택. –