我在一類這種功能:LINQ投影之後可選參數過濾
public IEnumerable<PedidosList> Pedidos_Listar(string sComprobante, Clientes MyCliente = null, DateTime? dDesde = null, DateTime? dHasta = null, bool bCumplidos = false)
{
using (var context = new OhmioEntities())
{
IEnumerable<PedidosList> query =
from Pedidos in context.Pedidos
join Clientes in context.Clientes on Pedidos.ID_Cliente equals Clientes.ID_Cliente
where Pedidos.ID_Comprobante == sComprobante
select new PedidosList {ID_Pedido = Pedidos.ID_Pedido, Fecha=Pedidos.Fecha, Aprobado=Pedidos.Aprobado, Bruto=Pedidos.Bruto, Cliente=Clientes.RazonFantasia,
FechaEntrega=Pedidos.FechaEntrega, Neto=Pedidos.Neto, Numero=Pedidos.Numero, Observaciones=Pedidos.Observaciones, Entregado=Pedidos.Entregado, ID_Cliente=Pedidos.ID_Cliente };
if (MyCliente != null) query = query.Where(i => i.ID_Cliente == MyCliente.ID_Cliente);
if (MyCliente != null) query = query.Where(i => i.ID_Cliente == MyCliente.ID_Cliente);
if (dDesde != null && dHasta != null) query = query.Where(i => i.Fecha >= dDesde && i.Fecha <= dHasta);
if (bCumplidos == false) query = query.Where(i => i.Entregado == false);
return query.ToList();
}
}
的想法是使用LINQ投影來填充,其中多個可選的過濾器參數進行評估的自定義類對象。我的問題是:出於性能和封裝的原因,我可以在應用過濾器後選擇投影后的投影嗎?在我的代碼投影完成之前,所以我只能過濾我的自定義類的字段,但我想過濾原來的類字段。謝謝。
是的,你可以。當你嘗試這樣做時,有什麼問題? – MarcinJuraszek
我不知道如何。我需要的是讓SELECT NEW PedidosList在添加附加的WHERE clausule之後。我supose需要找到一種方法來添加可選過濾器LINQ INSIDE LINQ語句,但我不知道這是否可能。我還定義查詢爲IEnumerable所以過濾器應用一旦對象已被創建。有任何想法嗎? –
ericpap