¿Las mejores prácticas para crear una aplicación de búsqueda?

Pronto comenzaré un proyecto simple de almacenamiento y búsqueda de datos. Básicamente, uno de esos "coloca mi enorme hoja de cálculo de Excel en una base de datos, crea una GUI web para ella y hace que se pueda buscar"

Una cosa que me ha estado molestando es la lógica de búsqueda real que se utilizará cuando el usuario ingrese algunos criterios. Me imagino una interfaz de búsqueda con un campo de texto y algunas otras herramientas de filtrado: cuadros combinados desplegables y casillas de verificación y demás.

Aunque eso me da un control muy fuerte y granular sobre el filtrado que puedo realizar, me pregunto qué piensa SO en la realización de la búsqueda. Usaré ASP.NET, MS SQL Server y Linq-To-SQL aquí, así que tenga en cuenta esas tecnologías.

Fuera de mi cabeza, creo que haría algo como:

var results = from s in db.Stuff
              where (s.Prop1.Contains(textFilter) ||
                     s.Prop2.Contains(textFilter) ||
                     s.Prop3.Contains(textFilter)) &&
                     checkbox1.IsChecked ?
                          s.Prop4.ToLower().Equals(combobox1.Text) : true
              select s;

Esto es lo que sé:

Cómo agrupar y se une si es necesario Puedo usar elContains () método en propiedades individuales para generar SQLME GUST consultas Puedo filtrar cosas propiedad por propiedad, construyendo mi lógica de búsqueda como se indica arriba.

Esto es lo que pregunto:

¿Hay alguna forma de buscar todas las propiedades (sin tirar todos los objetos a la memoria, lo que supongo que significa construir una lista de las propiedades de cada objeto con reflexión, encadenarlas y luego verificar)? Si no, esto parece increíblemente engorroso, ya que tendría que construir una nueva lógica para cada nueva propiedad que pudiera agregar. Algo como s.Contains (textFilter) en lo anterior sería ideal. Cómo funciona un SQLME GUST consulta realmente funciona? ¿Es algo que quiero hacer?Hay una forma estándar de implementar reglas de búsqueda, como cadenas citadas para operadores lógicos y de coincidencia completa como y? Me sorprendería si cada aplicación que las implementara lo hiciera con una lógica de análisis personalizada. ¿Estoy ladrando el árbol equivocado? ¿Me he perdido algo

Respuestas a la pregunta(6)

Su respuesta a la pregunta