[英]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.