J'ai une requête LINQ qui fonctionne au singulier - ici il est:Linq choisir entre 2 valeurs pour une liste d'id
public static AmountRange GetAmountRange(int term)
{
return amountTable
.Where(x => term.IsBetween(x.MinTerm, x.MaxTerm))
.Select(x => new AmountRange(term, x.MinAmount, x.MaxAmount))
.First();
}
La fonction IsBetween est une méthode simple d'extension « int », qui fait exactement ce que ça dit. Ce que je voudrais faire est de faire une autre variante qui accepte un tableau de 'int []' comme paramètre initial afin que je n'appelle pas plusieurs fois la requête.
S'il s'agissait d'un tableau de valeurs uniques, j'utiliserais simplement la fonctionnalité .Contains, mais ce n'est pas le cas.
Voici un exemple qui utilise .Contains - cependant, il ne permet pas une plage - seulement une seule valeur. Il doit être converti de sorte que chaque terme IsBetween MinAmount et MaxAmount.
public static IEnumerable<AmountRange> SelectAmountRange(int[] terms)
{
var termList = terms.ToList();
return amountTable.Where(t => termList.Contains(t.MinAmount))
.Select(x => new AmountRange(term would go here, x.MinAmount, x.MaxAmount))
.ToList();
}
Ainsi, en un mot, je veux obtenir les résultats suivants:
- passe un tableau int [] (termes) que les paramètres.
- Sélectionnez toutes les lignes où chaque valeur de terme se situe entre les valeurs de table MinAmount et Max.
Je pense que vous êtes en arrière. Changer la fonction pour retourner la liste. Puis changez .First() en .List(). –
jdweng
@jdweng - l'exemple bove est ce qui existe actuellement pour un seul paramètre - ce n'est pas un travail en cours pour la nouvelle version. –
pourquoi renvoyez-vous 'First' et pas' ToList'? Si c'est l'algorithme que vous êtes sûr à 100% que cela fonctionne correctement, alors je n'ai aucun argument. Je demande juste pour que je puisse fournir la bonne réponse. –