如何在lambda表达式中调用方法?

时间:2016-09-29 10:42:43

标签: linq c#-4.0 lambda

我正在处理一个项目,并且我被这大量代码所困扰。

我不明白如何从lambda表达式调用CreateEcuDetails方法而不指定参数......

 var ecuList = new List<EcuDetails>();

 var distinctEcuType = (from c in convertedEcuType
     select c.ShortEcuType).Distinct().ToList();
 ecuList.AddRange(distinctEcuType.Select(CreateEcuDetails).OrderBy(x => x.Name));

 private EcuDetails CreateEcuDetails(string ecuType)
 {
     return new EcuDetails
     {
         Name = ecuType,
         ImportPath = ecuType,
         LogicalPath = "Ecu Type"
     };
 }

这段代码已经编写完了,我必须写一些与此类似的内容,但CreateEcuDetails必须再获得一个参数,这是另一个字符串,但正如我所说,我不知道该方法是如何工作的,当我将另一个参数添加到方法中时,它不再起作用了......

我想要做的是按两个元素排序ecuList,首先是carModel,然后是ecuType。

所以如果有人能帮助我,我会非常感激。

谢谢!

1 个答案:

答案 0 :(得分:3)

它只是使用一种语法糖功能,允许您指定方法组而不是lambda。所以代码:

distinctEcuType.Select(CreateEcuDetails)

有效地被编译器翻译成以下内容:

distinctEcuType.Select(x => CreateEcuDetails(x))