I have a `IList<User>` that contains objects with a pair of value: `Name` and `Surname`.
On the database I have a table that contains rows with Name and Surname field. I want on codebehind to return the list of the rows that match my List, so let say have Name and Surname (respectively) equals. 

My actual code is:

```
utenti = (from User utente in db.User.AsEnumerable()
          join amico in amiciParsed 
               on new { utente.Nome, utente.Cognome } equals 
                  new { Nome = amico.first_name, Cognome = amico.last_name }
          select utente).OrderBy(p => p.Nome)
                        .OrderBy(p => p.Cognome)
                        .OrderBy(p => p.Nickname)
                        .ToList();

```

but this it is not good for two reasons:

1. It will download the whole records of the DB on the client;
2. I can't match Name and Surname as case sensitive (example Marco cordi != Marco Cordi); and on DB I have every kind of up/down chars.

As suggested on a previously question, seems that this [answer](https://stackoverflow.com/questions/841226/case-insensitive-string-compare-in-linq-to-sql) can't help me, since I have to do a join (and also because the first problem it is not related).

What's the way to resolve this problem?