Basically using extension methods (or in English, Extension Methods). The complete list of them is here, but try to use the link as a reference, after you have mastered the general aspect of how to write a complete command.
I will give some equivalent examples, as well as explanations that are pertinent to the understanding, since I have never found a manual or tutorial that is didactic enough.
How to Read a Predicate Expression (alias "lambda expression")
It is a common difficulty for programmers who have a certain seniority in object-oriented languages to have difficulty understanding how a predicate expression works.
Suppose the expression of Example 1:
db.usuario.SingleOrDefault(x => x.Nome == "Fulano");
This:
x => x.Nome == "Fulano"
It is a Predicate Expression, and should be read as:
"For every object x within this collection, such that the property Name of x equals 'So-and-so'."
Or another example (Example 2):
db.usuario.Select(x => x.Nome);
The expression:
x => x.Nome
It should be read as:
"For every object x within this collection, consider the property Name of x."
Example 1: select * from Usuario where Nome = "Fulano";
I am assuming that only one record will be returned. For this, the method SingleOrDefault meets the need:
var resultado = db.usuario.SingleOrDefault(x => x.Nome == "Fulano");
Example 2: select Nome from Usuario;
Select selects some property of the object and returns an iterator. This iterator must be soon after transformed into a list to be used.
var resultado = db.usuario.Select(x => x.Nome).ToList();
Example 3: select Nome, Idade from Usuario;
Same principle as the previous example, but an anonymous object with two properties is mounted.
var resultado = db.usuario.Select(x => new { x.Nome, x.Idade }).ToList();
Example 4: select Nome as UsuarioNome, Idade as UsuarioIdade from Usuario;
Analogous to example 3, specifying the properties names of the anonymous object.
var resultado = db.usuario.Select(x => new { UsuarioNome = x.Nome, UsuarioIdade = x.Idade }).ToList();
Example 5: select * from Usuario order by Nome;
Just use the method OrderBy:
var resultado = db.usuario.OrderBy(x => x.Nome).ToList();
Example 6: select * from Usuario order by Nome desc;
Analogous to example 5 with another method, OrderByDescending:
var resultado = db.usuario.OrderByDescending(x => x.Nome).ToList();
Example 7: select * from Usuario order by Nome desc, Idade;
ThenBy is a cumulative method to OrderBy:
var resultado = db.usuario.OrderByDescending(x => x.Nome).ThenBy(x => x.Idade).ToList();
There is also the version ThenByDescending.
Example 8: select * from Usuario where Nome like '%Fulano%';:
Similar to Example 1, only exchanging the equal operator for Contains:
var resultado = db.usuario.Where(x => x.Nome.Contains("Fulano")).ToList();
Example 9: select * from Usuario group by CategoriaId;:
Use the method GroupBy.
var resultado = db.usuario.GroupBy(x => x.CategoriaId).Select(grupo => new { Chave = grupo.Key, Valores = grupo.ToList()}).ToList();
Example 10: select * from Usuario where UsuarioId in (1, 2, 3);
var listaDeIds = new List<int> { 1, 2, 3};
var resultado = db.usuario.Where(x => listaDeIds.Contains(x.UsuarioId)).ToList();
Example 11: select u.* from Usuario u inner join Categoria c ... ;
The Join is one of the most complicated operators to understand. Most of the time, its use is unnecessary, but assuming it is really necessary, I will give an example assuming that a User has a Category, and that the Model Usuario has a property called CategoriaId which is a foreign key to the Model of Categoria:
var resultado = db.Usuario.Join(db.Categoria,       // A tabela que será unida ao resultado
                                u => u.CategoriaId, // A chave estrangeira da tabela em questão. Nossa tabela em questão é 'Usuario'
                                c => c.CategoriaId, // A chave primária da tabela que será unida
                                // Dados os dois conjuntos, Usuario representado por u e Categoria por c, 
                                // Este argumento produz o retorno do Join, criando um objeto anônimo 
                                // com as propriedades desejadas.
                                (u, c) => new { NomeUsuario = u.Nome, NomeCategoria = c.Nome }).ToList();
Example 12: Aggregate
Aggregate has no equivalent in any and all database system. It is important to explain the concept of it before.
Suppose a ratio of 1 to N, or then from N to N. In our example, suppose the User now has permissions per screen (I will invent a Model called UsuarioPermissao, which is an associative table between Usuario and Permissao), which is stated in Model Usuario as follows:
public virtual ICollection<UsuarioPermissao> UsuarioPermissoes { get; set; }
For example make sense, I’ll match the Aggregate with another operator, called SelectMany. SelectMany is analogous to Select, but serves for a set of objects. 
Suppose you would like to return all permissions of all users, their permissions being in a single line, separated by a comma (or so by a semicolon, whatever). The method Aggregate do it like this:
var resultado = db.Usuario.SelectMany(p => p.UsuarioPermissoes).
                          .Aggregate("",     // String inicial, chamada de 'acumulador'
                                     // A construção abaixo considera 'str' como a String acumulada e 'usuarioPermissao' como o registro atual da iteração
                                     (str, usuarioPermissao) => str + ", " + usuarioPermissao.Permissao.Nome).ToList();
							
							
						 
really hard to find manual, or didactic tutorial enough. And man, your answer is excellent and much better than I expected and meets me perfectly. Thank you.
– Erico Souza
Man, very good.
– Erico Souza