Curso Completo Base de datos

multiples filtrados con linq en tiempo de ejecucion

Colapsar
X
  • Filtrar
  • Tiempo
  • Mostrar
Limpiar todos
nuevos mensajes

  • multiples filtrados con linq en tiempo de ejecucion

    Tengo esta consulta

    var consulta = from x in lista where
    DateTime.Parse(parametrosValor[1].Split('#')[1]).CompareTo(x.Fecha.GetValueOrDefault()) >= 0
    select x;

    y me dice que
    {"The method System.Nullable`1[System.DateTime].GetValueOrDefault does not have a supported translation to SQL"}

    Esta consulta está en el contexto de documento en la siguiente función:

    public static List<Documento> DevolverTodo(string sortExpression, int startRowIndex, int maximumRows)
    {

    string[] parametrosValor = sortExpression.Split(',');

    //sabemos que los parametros van a ser del tipo tipo y fecha



    //Hay que devolver objetos de negocio y no entidades de datos
    List<Documento> listaDocumentosNegocio = new List<Documento>();

    IQueryable<eMatiz.ConsFarm.Entidades.Documento> lista = Entidades.Documento.GetAllDocumentos() ;


    if (parametrosValor.Length > 0 && parametrosValor[0].Split('#')[0].Equals("tipo"))
    {
    var consulta = from x in lista where x.IDTipoDocumento== int.Parse(parametrosValor[0].Split('#')[1])
    select x;
    lista = consulta;
    }
    if (parametrosValor.Length > 1 && parametrosValor[1].Split('#')[0].Equals("fechaDesde"))
    {
    //lista = lista.Where(x=> x.Fecha.GetValueOrDefault ().CompareTo(DateTime.Parse(parametrosValor[1].Split('#')[1])) >= 0 );
    var consulta = from x in lista where
    DateTime.Parse(parametrosValor[1].Split('#')[1]).CompareTo( x.Fecha.GetValueOrDefault()) >= 0
    select x;
    lista = consulta;
    }

    foreach (Entidades.Documento documento in lista)
    {
    listaDocumentosNegocio.Add(new Documento(documento));
    }

    return listaDocumentosNegocio;
    }

    La idea es buscar documentos filtrados por tipo, por fecha desde una fecha hasta otra, o por combinación de todos estos filtros.

    ¿Como se resuleve este problema? Estoy harto de buscar en google y no encuentro la solución.

    Gracias

  • #2
    yo mismo me contesto...

    Pues resulta que es es bastante sencillo...

    using System.Query;

    tenemos un list de pèrsonas:
    List<Persona> l;

    si filtrar por nombre es verdadero:
    l = l.where( x=> x.nombre == "pepe");
    fin si

    si filtrar por apellido es verdadero
    l = l.where( x=> x.apellido == "perez");
    fin si

    Comentario

    Trabajando...
    X