Привет всем! У меня возникла проблема при поиске точной записи с помощью метода запросов LINQ в asp.net web api. Код моего контроллера не выполняется
[HttpGet]
[Route("api/tblProducts/AllProductbySearch/{SearchText}")]
[ResponseType(typeof(IEnumerable<tblProduct>))]
public IHttpActionResult AllProductbySearch(string SearchText)
{
IEnumerable<tblProduct> tblProduct = db.tblProducts.Where(x=>x.PrdKeyword.Contains(SearchText)).AsEnumerable();
if (tblProduct == null)
{
return NotFound();
}
return Ok(tblProduct);
}
В этом случае я выполняю поиск записи со значением иметь ключевое слово coloum и получаю результат, но проблема в том, что он не дает точного результата, например, если в базе данных две записи имеют значение столбца ключевого слова, например рубашка, а другая - Tshirt
затем, если я передам футболку в SearchText или футболку в SearchText, она выдаст обе записи, а я хочу одну запись, которая точно соответствует SearchText, Pleae поможет мне
Мой обновленный код метода Action
UPDATE
[HttpGet]
[Route("api/tblProducts/AllProductbySearch/{SearchText}")]
[ResponseType(typeof(IEnumerable<tblProduct>))]
public IHttpActionResult AllProductbySearch(string SearchText)
{
IEnumerable<tblProduct> tblProduct = db.tblProducts.Where(x => CheckWord(x.PrdKeyword, SearchText)).AsEnumerable();
if (tblProduct == null)
{
return NotFound();
}
return Ok(tblProduct);
}
private bool CheckWord(string source, string searchWord)
{
var punctuation = source.Where(Char.IsPunctuation).Distinct().ToArray();
var words = source.Split().Select(x => x.Trim(punctuation));
return words.Contains(searchWord, StringComparer.OrdinalIgnoreCase);
}
Но выдает ту же ошибку 500