繁体   English   中英

将Lambda表达式转换为LINQ查询

[英]Convert lambda expression to linq query

有什么办法可以在linq查询中转换此lambda表达式?

function List<ViewModel> CreateViewModels(List<Model> models)
{
   return models.Select(x =>
   {
      var viewModel = new ViewModel();

      this.UpdateViewModel(x, viewModel);

      return viewModel;
   }).ToList();
}

其中“ UpdateViewModel”是一个将值从Model对象传输到ViewModel对象的函数。

好的,这段代码很干净,但是我想知道linq查询是否等效。

我同意您可能做对了-方法链接语法非常有用,并且实际上是我编写LINQ的首选方法。

但是,如果您真的想使用LINQ查询语法,我认为您必须执行以下操作,这基本上只是将大的lambda分解为单独的内容:

Func<Model, ViewModel> func = m =>
    {
        var viewModel = new ViewModel();
        this.UpdateViewModel(m, viewModel);
        return viewModel;
    };

return (from m in models
        select func(m)
       ).ToList();

或者,当然,如果您愿意的话,可以将其分解为实际的方法,而不是Func

如果可以,则最好执行以下操作:

public class ViewModel
{
    public ViewModel(Model m)
    {
        // Do whatever it is you're currently doing in UpdateViewModel
    }
}

然后,您可以执行以下操作:

from m in models
select new ViewModel(m)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM