filtrar un conjunto de resultados en asp.net mvc3

Tengo una vista IEnumerable. Esta página de vista (cshtml) contiene datos del modelo y algunos datos de un formulario. Enumeró todos los datos de mi modelo de la base de datos. quiero filtrar esos datos por múltiples opciones de filtro, como filtrar por ciudad, área, piso, carretera, etc., todos esos filtros están en mi campo de formulario. Mi acción es así:

                                                                                            [HttpPost]
  public ViewResult SearchPost()
      {

        var posts =db.posts.Include("user").ToList();

        if (Request.Form["searchString"] != null)
        {
           posts = (from posts in db.posts where posts.area   
           ==Request .Form["searchString"]).ToList();                      
        }
         if (Request.Form["searchString2"] != null)
        {
            posts = (from posts in db.posts where posts.city 
            ==Request.Form["searchString2"]).ToList();
        }
          if (Request.Form["searchString3"] != null)
        {
            posts = (from posts in db.posts where posts.floor 
            ==Request.Form["searchString3"]).ToList();
        }


        return View(posts);
       }

Mi página de visualización:

   @using (Html.BeginForm()){   
     <p> Area: @Html.TextBox("SearchString") 
     <p> City: @Html.TextBox("SearchString2") 
     <p> Floor: @Html.TextBox("SearchString3") 
     <input type="submit" value="Filter" /></p>
    }


   >.....list of Model Data

todas mis opciones de filtro son opcionales. se puede seleccionar una o varias opciones de filtro o no se puede seleccionar ninguna de ellas. da error Rango Postes variables Quiero filtrar mi conjunto de resultados en cada bloque de condiciones. Es posible ??? si es posible, por favor dame algunas ideas... Gracias de antemano

preguntado el 03 de mayo de 12 a las 22:05

¿Puedes ser más específico con el mensaje de error? -

1 Respuestas

Siempre es una buena idea verificar si hay && Any() nulo en los resultados antes de ejecutar la consulta. Los filtros 1 y/o 2 pueden excluir todos sus resultados.

if (Request.Form["searchString"] != null)          
{
    if ((posts!=null) && (posts.Any()))
         {
                posts = (from posts in db.posts where posts.area
                ==Request .Form["searchString"]).ToList();                                
         }
}           
if (Request.Form["searchString2"] != null)          
{              
    if ((posts!=null) && (posts.Any()))   
         {
                posts = (from posts in db.posts where posts.area
                ==Request .Form["searchString2"]).ToList();                                
         }
}            
if (Request.Form["searchString3"] != null)          
{
    if ((posts!=null) && (posts.Any()))   
         {
                posts = (from posts in db.posts where posts.area
                ==Request .Form["searchString3"]).ToList();                                
         }
}              

contestado el 03 de mayo de 12 a las 22:05

da el error: la variable de rango 'publicaciones' entra en conflicto con una declaración anterior de publicaciones. Creo que este error solo se aplica a las publicaciones de Var.. - awlad liton

Ya veo... entonces cambiaría el nombre de tu var a otra cosa. Tal vez esté luchando con eso. - miketwebb

no es necesario escribir mensajes. var lo calcula por usted basándose en el lado derecho de la ecuación. Sin embargo, parece que sería algo así como IList - miketwebb

¿Ha cambiado el nombre de las publicaciones a publicaciones 1 solo para ver qué sucedería? miketwebb

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.