在lambda表达式中,以下代码片段等效于什么?

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 };

最佳答案

这是一个使用方法语法(与查询语法相对)的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,可以将其删除。

关于c# - 使用lambda表达式的化合物选择,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/7188014/

10-13 02:56