Question: I am compulsive and like visually clean designs.

Theres a pop up in my app that tells the user that there's an error. 

I made a clear button over the entire pop up (about 200x100 px) so the user can just touch the notification to dismiss it.

But i'm afraid the user might not know that you can just touch the pop up to dissmiss and would go crazy looking for the "OKAY" button. 

Do you guys think the OKAY button is necessary or is a giant clear button overlaying the notification good enough? 

note: the whole notification actually looks like a button because of rounded corners and some button like borders.

Answer: 
> 
> 
> > 
> > context.Authors.Where(a => a.Books.Any(b => b.BookID == bookID)).ToList(); 
> > 
> > 
> > 
> 
> 
> 

`a.Books` is the list of books by that author. The property is automatically created by Linq-to-Sql, provided you have a foreign-key relationship set up.

So, `a.Books.Any(b => b.BookID == bookID)` translates to "Do any of the books by this author have an ID of bookID", which makes the complete expression "Who are the authors of the book with id bookID?"

That could also be written something like

```
  from a in context.Authors
  join b in context.Books on a.AuthorId equal b.AuthorID
  where b.BookID == bookID
  select a;

```

UPDATE:
 `Any()` as far as I know, only returns a `bool`. Its effective implementation is:

```
 public Any(this IEnumerable<T> coll, Func<T, bool> predicate)
 {
     foreach(T t in coll)
     {
         if (predicte(t))
            return true;
     }
     return false;
 }

```
IEnumerable introduces quite a number of extensions to it which helps you to pass your own delegate and invoking the resultant from the IEnumerable back. Most of them are by nature of type Func

The Func takes an argument T and returns TResult. 

In case of 

Where - Func : So it takes IEnumerable of T and Returns a bool. The where will ultimately returns the IEnumerable of T's for which Func returns true. 

So if you have 1,5,3,6,7 as IEnumerable and you write .where(r => r<5) it will return a new IEnumerable of 1,3. 

Any - Func basically is similar in signature but returns true only when any of the criteria returns true for the IEnumerable. In our case, it will return true as there are few elements present with r<5. 

Exists - Predicate on the other hand will return true only when any one of the predicate returns true. 
So in our case if you pass .Exists(r => 5) will return true as 5 is an element present in IEnumerable.