2010-01-17 5 views
4

참고 : Charlie Calvert 아래에 101 개의 LINQ 샘플이 올바른 코드로 업데이트되었습니다.MSDN의 101 LINQ 샘플에서이 코드에 버그가 있습니까? (업데이트 : 고정)

MSDN Visual C# 개발자 센터에는 101 LINQ 샘플이라는 섹션이 있습니다. Bing 검색을 통해이를 발견했습니다. SelectMany - Compound from 1에 대한

코드는 다음과 같습니다

public void Linq14() { 
    int[] numbersA = { 0, 2, 4, 5, 6, 8, 9 }; 
    int[] numbersB = { 1, 3, 5, 7, 8 }; 

    var pairs = 
     from a in numbersA, 
      b in numbersB 
     where a < b 
     select new {a, b}; 

    Console.WriteLine("Pairs where a < b:"); 
    foreach (var pair in pairs) { 
     Console.WriteLine("{0} is less than {1}", pair.a, pair.b); 
    } 
} 

그러나 이 코드는를 컴파일되지 않습니다. 이 MSDN의 예 또는 버그인지 잘 모르겠어요

 var pairs = 
      from a in numbersA 
      from b in numbersB 
      where a < b 
      select new {a, b}; 

을 : 나는 from a in numbersA,의 끝에서 쉼표를 제거하고 대신 b in numbersB 앞에 from을 추가하는 경우, 그것은 컴파일하고 잘 작동 것으로 나타났습니다 가능한 경우이 구문을 지원하지 않는 C# 및 .NET 버전을 실행하고 있습니다.

101 LINQ 샘플 웹 사이트의 맨 위에있는 탐색 경로를 보면 "미래 버전"이라고 표시됩니다. 이것은 C#/.NET의 이후 버전이 LINQ 구문에서 from 대신 쉼표를 사용하도록 지원함을 나타 냅니까?

나는 .NET 3.5 SP1과 비주얼 스튜디오 2008 표준을 사용하고 있습니다.

답변

2

예, 우리는 방금 이런 종류의 문제에 시달리지 않아야하는 101 개의 샘플 대부분을 새 코드로 업데이트했습니다. 우리는 많은 새로운 코드를 게시했는데, 특히 간격을두고 약간의 결함이 있지만 잘하면 우리보다 더 나은 모양입니다. 지금 링크를 액세스 시도하고 더 나은 보이는 경우 참조 : 빠른 수정의

http://msdn.microsoft.com/en-us/vcsharp/aa336758.aspx

  • 찰리
+0

을. 좋은 직장과 업데이트 주셔서 감사합니다! –

4

예, 샘플에 버그가 있습니다.

해당 구문이 지원 될 수있는 시험판 버전에서 나온 것으로 의심됩니다. 필자는 "Future Versions"에서 아직 작성된 시점에 이고 이후 버전에 대해서는 여전히 계속 나타나기를 기대합니다.

이 구문은 공개적으로 인정되는 유일한 미래 버전 인 C# 4에서 확실히 지원되지 않습니다.

0

Jon이 언급 한 바와 같이 버그입니다. 또한 the samples은 존재하지 않는 메서드 인 FoldEqualAll을 잘못 나열합니다. 그들은 각각 AggregateSequenceEqual으로 대체되었습니다.

관련 문제