Utiliser les requêtes LINQ pour les objets
Pour utiliser les avantages de LINQ, il est intégré à NCache utilisant l' NCacheQuestion classe, qui implémente la IQueryable interface fournie par le .NET framework. Cette intégration permet à l'utilisateur d'interroger des objets à l'aide de requêtes LINQ.
Aucune modification de code n'est requise pour l'utilisation des requêtes LINQ en dehors de l'initialisation du cache et de l'implémentation de l'interface mentionnée précédemment ainsi que des nouveaux ajouts attendus de référence d'assembly et d'espace de noms. Le reste du code fonctionnera sans aucun changement d'application.
Requêtes LINQ : interroger des objets via NCacheClasse de requête
Vous pouvez utiliser l'un des opérateurs LINQ pris en charge suivants pour récupérer NCache objets utilisant NCacheQuestion:
- Opérateurs de projection
- Opérateurs de restriction
- Opérateurs de requête de base
- opérateurs logiques
- Opérateurs d'agrégation
- Opérateurs de requête génériques
Le code ci-dessous montre tous les opérateurs suivants dans la manière dont ils sont destinés à être utilisés.
Conditions préalables à l'utilisation des requêtes LINQ
Avant d'utiliser les requêtes LINQ, assurez-vous que les conditions préalables suivantes sont remplies :
- Pour en savoir plus sur les prérequis standard requis pour travailler avec tous NCache fonctionnalités côté client, veuillez vous référer à la page donnée sur Prérequis de l'API côté client.
- L'indexation des objets interrogeables et leurs attributs doivent d'abord être configurés comme expliqué dans notre section sur Indexation dynamique ainsi que les Configuration des index de requête et dans le Guide de l'administrateur.
- Pour plus de détails sur l'API, reportez-vous à : NCacheQuestion.
Opérations LINQ
Le code suivant utilise le NCacheQuestion classe utilise plusieurs des opérateurs dont nous avons discuté pour montrer comment utiliser NCache avec LINQ.
Utilisation de l'expression de requête
// 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");
}
Utilisation de l'expression Lambda
// Lambda expression for same query
IQueryable<Product> result = products.Select(prod => prod).Where(prod => ((prod.Category == "Beverages" || prod.Category == "Dairy") && prod.UnitsInStock > 10));
Ressources additionnelles
NCache fournit un exemple d'application pour NCache LINQ activé GitHub.
Voir aussi
.RAPPORTER: Alachisoft.NCache.Linq espace de noms.