Disons que j'ai un enregistrement Personne dans une base de données, et qu'il y a un champ Âge pour la personne.LINQ comment interroger si une valeur est entre une liste de plages?
Maintenant, j'ai une page qui me permet de filtrer pour les personnes dans certaines tranches d'âge. Par exemple, je peux choisir plusieurs sélections de gamme, telles que «0-10», «11-20», «31-40».
Donc dans ce cas, je récupérerais une liste de personnes entre 0 et 20, ainsi que de 30 à 40, mais pas de 21 à 30.
J'ai pris les tranches d'âge et peuplé d'une liste des gammes qui ressemble à ceci:
class AgeRange
{
int Min { get; set; }
int Max { get; set; }
}
List<AgeRange> ageRanges = GetAgeRanges();
J'utilise LINQ to SQL pour mon accès de base de données et les requêtes, mais je ne peux pas comprendre comment interroger les plages.
Je veux faire quelque chose comme ça, mais bien sûr, cela ne fonctionnera pas car je ne peux pas interroger mes valeurs locales contre les valeurs SQL:
var query = from person in db.People
where ageRanges.Where(ages => person.Age >= ages.Min && person.Age <= ages.Max).Any())
select person;
Quelle erreur exacte recevez-vous? –
NotSupportedException - La séquence locale ne peut pas être utilisée dans les implémentations LINQ to SQL des opérateurs de requête à l'exception de l'opérateur Contient. – Makotosan
Pourquoi ne pouvez-vous pas interroger vos valeurs locales par rapport aux valeurs db? Ce que je pense que vous devrez faire ici est de faire la requête dans une boucle sur les ensembles de AgeRanges et d'Union les requêtes en utilisant Linq. Je vais devoir voir si je peux trouver un exemple comme je ne l'ai jamais fait auparavant ... (le syndicat que je veux dire) – EJC