如何将 lambda 表达式翻译成普通代码? C#

How to translate a lambda expression to normal code? c#

我需要在 .net Framework 2.0 中使用此代码,但问题是 labmdas(WHERE) 无法在此版本中使用,有什么办法吗?

var serializer = new JavaScriptSerializer();
retorno = serializer.Deserialize<RespuestaCvt>(respuesta);

var soloServidores = retorno.Rows.Where(x => listaEstados.Contains(x.EstadoId)).Where(x => listaTipos.Contains(x.TipoId)).ToList();
                                return soloServidores;

由于 Lambda 表达式直到 C# 3 才可用,因此您将不得不更改执行实际行过滤的方式。既然你回来了 List<> 我们可以回到 pre-LINQ 做事的方式:

var soloServidores = new List<TheRowType>();
foreach (var row in retorno.Rows)
{
    if (listaEstados.Contains(row.EstadoId) && listaTipos.Contains(x.TopiId))
        soloServidores.Add(row);
}
return soloServidores;

当然你可以用困难的方式来做,将 lambda 提取到一个静态方法然后实现一个合适的 Where(...) 扩展......但是如果你打算稍后尝试模拟 C# 功能语言版本,那么您通常最好将项目迁移到更高版本。