如何将linq查询转换为具有lambda表达式的扩展方法链

本文关键字:表达式 lambda 扩展 方法 linq 查询 转换 | 更新日期: 2023-09-27 18:28:40

我正在使用LINQ to Entities,我想知道如何使用扩展方法将以下查询转换为lambda表达式。

public _Deposito RegresaDepositosBancarios(int id)
        {
            return (from d in context.depositos_bancarios
                    where d.IDDeposito == id
                    select new _Deposito
                    {
                        idDeposito = d.IDDeposito,
                        cantidad = d.Monto,
                        fecha = d.FechaDeposito,
                        aplicado = d.Aplicado
                    }).Single();
        }

请注意,我正在返回一个_Deposito类型,如何使用扩展方法实现这一点?

我需要以下东西:

public Persona RegresaPersonaPorNombres(string nombres, string apellidoP, string apellidoM)
        {
            var p = context.personas.Where(x => x.Nombres == nombres &&
                                               x.ApellidoP == apellidoP && 
                                               x.ApellidoM == apellidoM).FirstOrDefault();
            return p;
        }

我不想返回实体类型,而是返回自定义类型

如何将linq查询转换为具有lambda表达式的扩展方法链

这就是用扩展方法编写的方法,但您真的不需要担心,因为它们都是一样的。

return context.depositos_bancarios
    .Where(d=>d.IDDeposito == id)
    .Select(d=>new _Deposito
                {
                    idDeposito = d.IDDeposito,
                    cantidad = d.Monto,
                    fecha = d.FechaDeposito,
                    aplicado = d.Aplicado
                })
    .Single();

一个有趣的旁注:我本可以在Where中使用d=>,然后在Select中使用e=>。然而,d在整个短语中都是向下的。重置它的唯一方法是使用let短语。这与直接的问题无关,但我只是觉得它很有趣,并想指出:)