Мне удалось создать мое первое веб-приложение MVC 5 с функциональностью CRUD.LINQ Содержит странное поведение
У моих данных есть несколько способов поиска записей, но один из них, похоже, не делает того, что я ожидаю от него. Вот мой контроллер код Поисковый запрос:
query = query.Where(c =>
c.PostCode.Contains(searchString)
|| c.Place1.Select(e => e.PostCode).Contains(searchString)
Вот моя модель:
public Place()
{
Place1 = new HashSet<Place>();
}
[Display(Name = "Postcode")]
public string PostCode { get; set; }
public virtual ICollection<Place> Place1 { get; set; }
Мои отношения базы данных является таблица ссылок самостоятельно -> 1 до 0, следовательно, то же имя для полей.
Может ли кто-нибудь объяснить мне, почему функция поиска принесет ожидаемые результаты при поиске полного значения «NR32 4TW» для обеих частей кода, но только первая часть запроса (до OR оператора) поиска найдет если я сделаю частичный поиск, используя «NR32 4T»?
Я проверил запрос на другие поля в базе данных, и у них такая же проблема.
TDLR; LINQ ".Contains()" не выполняет поиск частей строки при ее использовании в коллекции в рамках модели. Может ли кто-нибудь объяснить это поведение?
LINQ - это интерфейс. Вы используете Entity Framework? Это то, что реализует интерфейс LINQ. –
Вы смешиваете 'Enumerable.Contains' с' string.Contains'. Второй критерий должен быть «c.Practice1.Any (e => e.PostCode.Содержит (SearchString)) '. –