How to get/find an object by property value in a list

Viewed 26602

I have a question about getting a list objects by "searching" their field names using LINQ. I've coded simple Library and Book classes for this:

class Book
{
    public string title { get; private set; }
    public string author { get; private set; }
    public DateTime indexdate { get; private set; }
    public int page { get; private set; }

    public Book(string title,string author, int page)
    {
        this.title = title;
        this.author = author;
        this.page = page;
        this.indexdate = DateTime.Now;
    }
}

class Library
{
    List<Book> books = new List<Book>();

    public void Add(Book book)
    {
        books.Add(book);
    }

    public Book GetBookByAuthor(string search)
    {
        // What to do over here?
    }
}

So I want to get Book instances which certain fields is equal to certain strings, like

if(Book[i].Author == "George R.R. Martin") return Book[i];

I know it's possible with simple loop codes but I want to do this with LINQ. Is there any way to achieve this?

4 Answers
Related