Предполагая, что вы ищете записи для конкретного пользователя
вам нужно использовать
IEnumerable<Book> myBooks = db.Books.Where(x =>
x.BookTitle.Contains(searching) ||
searching == null).Where(x => x.User.UserId == currentUser.UserId).ToList();
Примечание в C #, типы значений (int, long и т. Д.), Когдаиспользуемые с оператором == сравниваются по значению, ссылки сравниваются по местоположению ссылки, это означает, что пользователь, на которого вы ссылаетесь, должен быть той же ссылкой, что и текущий пользователь.
При использовании object.Equalsметоды, он пытается сравнить содержимое типа класса (в вашем случае, объект User), например,
User.Id == o.UserId && UserId.Name == UserId.Name,и т. д.
Поэтому используйте тип оценки, например, int, и т. д., которые являются уникальными для фильтрации этого вместо