Searching for an object with spectific property, using user input
Always nice to see a student eager to learn.

Class Book

Your should try to always use an access modifier, so this should be

public class Book


Other issues:


Public properties in C#, should begin with a capital letter.
Price should be a Decimal (used for currency or monetary values) instead
of a whole number. 
Genre should rightfully be a property to a Book, and not static to the entire class.  Changing the genre then becomes as easy as updating the property. 
myList does not belong in the Book class. It should not be static and should be moved to Main.
ToString() does not need to refer this..  Nor is the output needed.  Instead just return the string.Format.


Search Methods

The names should use PascalCasing, example SearchByPublisher, SearchByPrice.

There is no reason for the trailing .ToList() inside each respective foreach.  The Where has already returned an enumerable collection that you will iterate over.

For comparing strings, you have no regard for case.  Thus "HOBBIT" and "hobbit" would not match "Hobbit".  You may want to allow for ignoring the case.  Another consideration would be on matching a partial string.  Consider if the user enters "dragons" at the console that maybe you want to return "A Dance with Dragons".

Going Further

As a beginner, be sure you grasp what you see so far.  Then go a step further and add a Books class that implements List&lt;Book&gt;.  Now the search methods could be moved inside the Books class.  In the name of Separation of Concerns, you don't want the searches to also write to the console.  Instead, the search should be concerned only with searching.  That would mean each respective search would return an IEnumerable, or really just the results of the Where( ... ).