c#如何理解这个 lambda 表达式?

标签: Linq C#
发布时间: 2017/2/28 22:51:10
注意事项: 本文中文内容可能为机器翻译,如要查看英文原文请点击上面连接.

我是一个 C# 新手。有人能帮我理解此 C# lambda 表达式?

var projs = allCustomers.SelectMany(osd => osd.phoneNumbers,
                                   (osd, osv) => new { customer= osd, phoneNumber= osv });

谢谢你/下摆

解决方法 1:

使用此重载SelectMany

public static IEnumerable<TResult> SelectMany<TSource, TCollection, TResult>(
      this IEnumerable<TSource> source,
      Func<TSource, IEnumerable<TCollection>> collectionSelector,
      Func<TSource, TCollection, TResult> resultSelector
)

有三个参数︰

source :
Type: System.Collections.Generic.IEnumerable<TSource>
A sequence of values to project.

collectionSelector
Type: System.Func<TSource, IEnumerable<TCollection>>
A transform function to apply to each element of the input sequence.

resultSelector
Type: System.Func<TSource, TCollection, TResult>
A transform function to apply to each element of the intermediate sequence.

你的情况, sourceallCustomerscollectionSelector 是该表达式︰

osd => osd.phoneNumber 

resultSelector 是︰

(osd, osv) => new { customer= osd, phoneNumber= osv }

第一个表达式在这里,每个 customer ,并返回它有 phoneNumbers 。在第二个表达式,类型的 osdcustomerosvphoneNumber ,结果是一个匿名类型。它以每个客户和电话号码,将创建一个匿名类型使用这些值。

这里是此查询所做的一个示例︰

Customer - Phone Numbers
------------------------
John      1234567,2331212,1122334
Jack      1456771,9485323
Juliet    2401232

其结果将是︰

John   1234567
John   2331212
John   1122334
Jack   1456771
Jack   9485323
Juliet 2401232
赞助商