Вряд ли вы можете безопасно изменить загруженную банку. Изменение его во время его использования не является хорошей идеей.
Если вы хотите это сделать, используйте простой файловый системный каталог и добавьте / удалите из него файлы. Даже это может не работать так, как вы ожидаете.
Если у вас много условий, вы можете переместить код в метод, чтобы улучшить читаемость / повторное использование:
albums = _albumRepository.Albums.Where(p => p.Match(searchString))
Затем создайте метод расширения для типа p
([113 ] или просто добавьте это к самому классу, если в вашем проекте будет больше смысла.
public static class AlbumsExtensions
{
public static bool Match(this Album album, string search)
{
// whatever complex logic you have stays here
var search = searchString.ToLower();
var result = p.Name.ToLower().Contains(search) ||
p.Artist.ToLower().Contains(search) ||
p.Genre.ToLower().Contains(search);
return result ;
}
}
И последнее, но не менее важное: обратите внимание, что сравнение строк не является тривиальным, если вы поддерживаете Unicode и несколько языков.
Для получения дополнительной информации взгляните на (например): Без учета регистра «Содержит (строка)»
Сложно ответить, учитывая, что мы не можем видеть ваши фактические модели здесь, но, вообще говоря, вам просто нужно использовать логический оператор ИЛИ:
albums = _albumRepository.Albums.Where(p =>
p.Name.ToLower().Contains(_searchString.ToLower()) ||
p.Artist.ToLower().Contains(_searchString.ToLower()) ||
p.Genre.ToLower().Contains(_searchString.ToLower())
);
Если [ 111] / Genre
на самом деле являются опорными опорами, вы просто углубитесь в них, то есть p.Artist.Name.ToLower().Contains(...)
и т. Д.