Tengo un formulario de búsqueda que permite a los usuarios buscar en diferentes campos de diferentes maneras. Aquí hay un ejemplo de mi código.Formulario de búsqueda ASP.NET - ¿Dinámico a SQL?
var claims = from c in db.Claims select c;
switch (ddlSearchField.Text)
{
case "StartsWith":
claims = claims.Where(c => c.companyFileID.StartsWith(txtSearchBox.Text));
break;
case "Equals":
claims = claims.Where(c => c.companyFileID == txtSearchBox.Text);
break;
case "Contains":
claims = claims.Where(c => c.companyFileID.Contains(txtSearchBox.Text));
break;
}
Tengo cerca de diez diferentes campos que un usuario puede buscar en lo que mi sentencia switch externo es bastante grande. Tiene que haber una forma más elegante de lograr esto.
Hola Thomas, su solución se ve muy bien y es muy cercano a lo que yo estoy buscando. ¿Es seguro establecer la variable "claims" en un datasource de gridview? Lo intenté y recibí un mensaje de error. –
Lo sentimos, el mensaje de error fue: Método 'System.Object DynamicInvoke (System.Object [])' no tiene traducción soportada a SQL. –
Bien, veo el problema ... Linq to SQL no puede convertir una llamada de delegado a una expresión SQL, por lo que falla. Trataré de encontrar una solución y actualizar mi respuesta –