使用lambda表达式选择化合物

时间:2011-08-25 09:28:49

标签: c# .net linq lambda

什么相当于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 };

2 个答案:

答案 0 :(得分:10)

以下是使用方法语法的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不是必需的,可以删除。

答案 1 :(得分:3)

请查看LINQ to Lambda翻译的链接

LinQ to Lambda