Use consultas LINQ para objetos
Para utilizar os benefícios do LINQ, ele é integrado com NCache usando o NCachepergunta classe, que implementa o IConsultável interface fornecida pelo .NET framework. Essa integração permite ao usuário consultar objetos usando consultas LINQ.
Nenhuma alteração de código é necessária para usar consultas LINQ, além da inicialização do cache e da implementação da interface mencionada anteriormente, juntamente com a nova referência de assembly e adições de namespace esperadas. O resto do código funcionará sem qualquer alteração na aplicação.
Consultas LINQ: consultando objetos por meio de NCacheClasse de consulta
Você pode usar qualquer um dos seguintes operadores LINQ suportados para recuperar NCache objetos usando NCachepergunta:
- Operadores de projeção
- Operadores de restrição
- Operadores de consulta básicos
- Operadores lógicos
- Operadores de agregação
- Operadores de consulta curinga
O código abaixo demonstra todos os operadores a seguir da maneira como devem ser usados.
Pré-requisitos para usar consultas LINQ
Antes de usar consultas LINQ, certifique-se de que os seguintes pré-requisitos sejam atendidos:
- Para aprender sobre os pré-requisitos padrão necessários para trabalhar com todos os NCache recursos do lado do cliente, consulte a página fornecida em Pré-requisitos da API do lado do cliente.
- A indexação de objetos pesquisáveis e seus atributos precisam ser configurados primeiro, conforme explicado em nossa seção sobre Indexação Dinâmica e Configurando índices de consulta e no Guia do Administrador.
- Para obter detalhes da API, consulte: NCachepergunta.
Operações LINQ
O código a seguir usa o NCachepergunta classe usa vários dos operadores que discutimos para demonstrar como usar NCache com LINQ.
Usando expressão de consulta
// Precondition: Cache is already connected
// Create custom class LINQ object
IQueryable<Product> products = new NCacheQuery<Product>(cache);
// LINQ query to search cache
IQueryable<Product> result = from prod in products where (prod.Category == "Beverages" || prod.Category == "Dairy") && prod.UnitsInStock > 10 select prod;
if (result != null)
{
foreach (Product product in result)
{
Console.WriteLine($"Product '{product.ProductName}' in Category '{product.Category}' has stock of '{product.UnitsInStock}' units");
}
}
else
{
Console.WriteLine($"No product found");
}
Usando Expressão Lambda
// Lambda expression for same query
IQueryable<Product> result = products.Select(prod => prod).Where(prod => ((prod.Category == "Beverages" || prod.Category == "Dairy") && prod.UnitsInStock > 10));
Recursos adicionais
NCache fornece aplicativo de amostra para NCache LINQ ativado GitHub.
Veja também
.INTERNET: Alachisoft.NCache.Linq espaço para nome.