¿Cómo puedo buscar una palabra completa en LINQ?
Si busco la palabra "automóvil" en una lista de cadenas {"carpenter","car repair","carrying","car workshop"}
etc. Y el resultado debería ser "reparación de automóviles" y "taller de automóviles" solamente . Intento el siguiente código
List<string> _tags = (from item in string_array where item.ToLower().Contains(search_term) select item).ToList();
Pero siempre contiene palabras similares y encontré este enlace en SO Linq Regex para la búsqueda de palabras completas que no proporciona una respuesta completa usando Regx.
Entonces, cualquiera puede ayudar a escribir una respuesta en Regx o cualquier otra opción para usar con Linq.
Prueba esto:
var result = items.Where(i => i.Split(' ').Any(word => word.ToLower() == "car")).ToList();
Si necesita tener en cuenta las comas, puede usar esto en su lugar:
var reg = new Regex("\\bcar\\b", RegexOptions.IgnoreCase); var items = new [] { "carpenter", "car repair", "carrying", "car workshop", "car, repair", "car. repair", "car,repair" }; var result = items.Where(word => reg.IsMatch(word)).ToList();
Da:
car repair car workshop car, repair car. repair car,repair
list.Where(item=>item.Split(' ').Contains("car"));
Puedes hacer lo siguiente:
string.Split()
Contains
usando la sobrecarga de StringComaparer
me gusta:
string[] string_array = {"carpenter", "car repair", "carrying", "car workshop"}; string word = "car"; List<string> _tags = string_array.Where(r => r.Split() .Contains(word, StringComparer.InvariantCultureIgnoreCase)) .ToList();
Para salida:
foreach (var item in _tags) { Console.WriteLine(item); }
La salida sería:
car repair car workshop