Tendências

26 mai, 2022

Fazendo select com LINQ para pegar 20 linhas

Publicidade

Olá pessoal, meu nome é Mauricio Junior e hoje eu vou falar e mostrar como fazer um select com o LINQ para buscar as 20 primeiras linhas com mais de uma tabela do database.

Ferramentas:

  • Ferramenta: Visual Studio
  • Linguagem: C#
  • LINQ

Normalmente nós utilizamos o comando SELECT TOP 20 FROM Table INNER JOIN Table2 ON Table.Id = Table2.Id WHERE Id = 2 ORDER BY Field desc para buscar as 20 primeiras linhas de order decrescente. Note que existem duas tabelas relacionadas pelo campo Id com a condição WHERE Id = 2. É sempre importante colocar uma condição para não trazer tudo do database de forma desnecessária e performance é importante para o usuário a todo tempo, desenvolvedores precisam pensar nisso a todo tempo também.

Código: Select usando LINQ

public IEnumerable GetLastVideosByUserId(int userId)

{

    try

    {

        return

            (

                from vu in _db.VideoUser

 

                join vm in _db.VideoModels

                    on vu.VideoId equals vm.VideoId

 

                where vu.UserId == userId

 

                select new

                {

                    Title = vm.Title,

                    UserId = vu.UserId,

                    VideoId = vu.VideoId,

                    VideoLocalLink = vm.VideoLocalLink,

                    ImageVideo = vm.ImageVideo,

                    CourseId = vm.CourseId,

                    Date = vm.Date

                }

            ).Take(20);

    }

    catch (Exception ex)

    {

        throw ex;

    }

}   

Note que eu estou retornando no método um IEnumerable e eu começo com o return () e dentro eu coloco o select que eu preciso fazer.

No LINQ eu começo com o FROM e usando um alias para cada tabela do database, depois para fazer o join basta usar a palavra JOIN e vincular as tabelas usando o ON normal.

No final eu preciso fazer um novo SELECT NEW com apenas os campos que eu preciso para retornar à aplicação que chamou o método. Quando fecha o parênteses do return, é necessário colocar o Take(20) onde caracteriza o TOP 20 de um SELECT normal do database. Esse comando TAKE(n) simplifica bastante e ao invés de retornar uma lista, retorno apenas o número de linhas que eu preciso que nesse caso é 20.

Bom, espero que tenha entendido e gostado. Eu fico por aqui e qualquer coisa pode entrar em contato comigo pelo site www.mauriciojunior.net ou pelas redes sociais @mauriciojunior.net.