Y a-t-il un moyen de trouver l'index de la liste des préfixes partiels avec Linq, quelque chose comme: malheureusement, indexofof () code> n'accepte pas la Lambda expression. Y a-t-il une méthode LINQ similaire pour cela? P> p>
4 Réponses :
Vous pouvez utiliser Enumérable.First a>
Cela comporte deux fois la séquence pour obtenir l'index lorsque vous n'avez besoin que d'une fois.
Vous n'avez pas besoin de linq du tout, list
FINDIDEX code>
. int indexOfPartial = PartialValues
.Select((partialPrefix , index) => (partialPrefix , index))
.Where(x => wholeValue.StartsWith(x.partialPrefix))
.Select(x => x.index)
.DefaultIfEmpty(-1)
.First();
Super! Exactement ce que je cherchais. Merci. :)
Le code LINQ ne semble pas être correct. Vous devez appeler .First () code> pour convertir la séquence en valeur. Notez que tenter d'utiliser
.firstordefault () code> plutôt pour éviter que la manutention d'exception fera la valeur de l'index ambiguë: il contiendra 0 pour les deux cas lorsque l'article non trouvé et l'élément a été trouvé à la tête de la liste.
@firegurafiku: Je viens de remarquer que votre commentaire. Fixé. Maintenant, il a le même comportement que list.findindindex code>. Un bon exemple que LINQ n'est pas toujours plus lisible / concis.
Tim a la réponse la plus correcte ( https://stackoverflow.com/a/19792531/467172 ), bien que Si vous vouliez réellement une méthode d'extension pour iEnumerable
public static int IndexOf<T>(this IEnumerable<T> source, Func<T, bool> predicate)
{
int index = 0;
foreach (var item in source)
{
if (predicate(item)) return index;
index++;
}
return -1;
}
Si vous avez in cas, vous avez Liste
ienumerable code> (ou une autre collection qui le met en œuvre) au lieu de la liste code> code>, vous pouvez utiliser le code LINQ suivant: P>
int index = PartialValues.TakeWhile(partialPrefix=> ! wholeValue.StartsWith(partialPrefix)).Count();
Eh bien, qu'attendez-vous que cela fasse? Quelle est votre production attendue?
Qu'est-ce que
partialvalues code> type
@Arran, @sriramsakthivel, sa liste code> avec des valeurs telles que "-ms-", "-moz-", "-O-", etc.