注: 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 の将来のバージョンがfrom
LINQ 構文の代わりにコンマの使用をサポートすることを示していますか?
.NET 3.5 SP1 で Visual Studio 2008 Standard を使用しています。