Составной выбор с использованием лямбда-выражения - PullRequest
9 голосов
/ 25 августа 2011

Что эквивалентно следующему фрагменту кода в лямбда-выражении?

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

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

1 Ответ

10 голосов
/ 25 августа 2011

Вот выражение LINQ, использующее синтаксис метода (в отличие от синтаксис запроса ):

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

pairs = numbersA
  .SelectMany(_ => numbersB, (a, b) => new { a, b })
  .Where(x => x.a < x.b);

Исходный запрос переводится в это:

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

pairs = numbersA
  .SelectMany(_ => numbersB, (a, b) => new { a, b })
  .Where(x => x.a < x.b)
  .Select(x => new { x.a, x.b });

Однако последний Select не требуется и может быть удален.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...