Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Olá a todos os "Delpheiros" de plantão. Estou com uma dúvida quanto a LINQ no Delphi. Hoje eu vi um vídeo demonstrando o uso de um ORM para Delphi. Gostaria de entender como funciona o seguinte trecho de código, mais especificamente esse trecho Where( Linq['OrderId'] >= 30 ):
Orders := Manager.Find<TOrder>
.Where( Linq['OrderId'] >= 30 )
.OrderBy('CompanyName')
.List;
alguém saberia me explicar? Sei que é retornado uma lista de pedidos, mas minha dúvida é, como tratar um método para receber uma expressão e dentro dele saber quais os valores passados para converter essa expressão em SQL. Pois o trecho Where( Linq['OrderId'] >= 30 ) se transforma em WHERE ORDER_ID >= 30 dentro desse método. Espero que tenha conseguido explicar rs Obrigado.
Eles se aproveitam da possibilidade de ser possível sobrecarregar os operadores em records http://docwiki.embarcadero.com/RADStudio/Tokyo/en/Operator_Overloading_(Delphi)).
Possivelmente Linq['OrderId'] retorna um record(que representa a expressão OrderId) que possui o operador >= sobrecarregado para retornar um novo record(contendo a combinação da expressão OrderId com o valor 30).
Se o método Where aceitar o record como argumento ótimo, porem caso ele somente aceite uma string então o record deve ter o operador Implicit(conversão implícita) sobrecarregado para que ele possa ser convertido para string de forma transparente.