ПРИМЕЧАНИЕ: Чарли Калверт ответил ниже, что 101 образец LINQ теперь обновлен с правильным кодом.
В Центре разработчиков MSDN Visual C # есть раздел 101 LINQ Samples . Я нашел это с помощью поиска Bing.
Код для SelectMany - соединение от 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 , я вижу, что там написано "Будущие версии". Означает ли это, что будущие версии C # / .NET будут поддерживать использование запятой вместо from
в синтаксисе LINQ?
![image](https://i474.photobucket.com/albums/rr103/ossavir/LINQ_sample_breadcrumb.png)
Я использую Visual Studio 2008 Standard с .NET 3.5 SP1.