如何将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;
}
我不想返回实体类型,而是返回自定义类型
这就是用扩展方法编写的方法,但您真的不需要担心,因为它们都是一样的。
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短语。这与直接的问题无关,但我只是觉得它很有趣,并想指出:)