4

注: Charlie Calvertは、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);
    }
}

ただし、このコードはコンパイルされません。の末尾にあるコンマを削除し、from a in numbersA,代わりfromに の前に追加b in numbersBすると、コンパイルされて正常に動作することに気付きました。

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

これが MSDN の例のバグなのか、それともこの構文をサポートしていない C# と .NET のバージョンを実行している可能性があるのか​​はわかりません。

101 LINQ Samples Web サイトの上部にあるブレッドクラムを見ると、「将来のバージョン」と表示されています。これは、C#/.NET の将来のバージョンがfromLINQ 構文の代わりにコンマの使用をサポートすることを示していますか?

.NET 3.5 SP1 で Visual Studio 2008 Standard を使用しています。

4

3 に答える 3

4

はい、これはサンプルのバグです。

その構文がサポートされている可能性のあるプレリリース版からのものであると強く疑っています。それが書かれた時点では将来のバージョンについてだったので、それはまだ「将来のバージョン」の下に表示されていると思います.

この構文は、公に認められている唯一の将来のバージョンである C# 4 ではサポートされていません。

于 2010-01-17T21:23:37.283 に答える
2

はい、101 個のサンプルのほとんどを、この種の問題に悩まされることの少ない新しいコードで更新しました。多くの新しいコードを投稿しましたが、特にスペーシングに関してはまだいくつかの不具合がありますが、以前よりも良い形になっていることを願っています. 今すぐリンクにアクセスしてみて、見栄えが良くなるかどうかを確認してください。

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

  • チャーリー
于 2010-01-18T22:49:08.107 に答える
0

Jonが述べたように、これはバグです。さらに、サンプルには、存在しないメソッドFoldEqualAllが誤ってリストされています。Aggregateそれらは、それぞれおよびに置き換えられましSequenceEqualた。

于 2010-01-17T21:51:06.850 に答える