如何使用lambda表达式将linq查询转换为扩展方法链?

时间:2012-03-21 23:13:17

标签: c# lambda

我正在使用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;
        }

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

1 个答案:

答案 0 :(得分:4)

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

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();

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