voici une autre façon diviser une liste dans des listes plus petites de N Taille
Le but de ce message est de partager la connaissance impliquant des "Linq" et des opinions sans utiliser "pour" cravates et "gammes" directement. p>
Exemple: j'ai une liste de 100 articles et j'ai besoin de le faire dans 10 listes. P>
J'utilise le script suivant, quelqu'un a une meilleure façon ou plus performante? P>
var subLists = myList.Select((x, i) => new { Index = i, Item = x })
.GroupBy(x => x.Index / "MAXIMUM ITEMS ON SUBLIST")
.Select(x => x.Select(v => X.Item).ToList());
3 Réponses :
C'est une opération lente Voici une méthode d'extension qui fonctionnera avec n'importe quelle liste P> ou meilleure performance P > public static List<List<T>> splitList<T>(this List<T> items, int size)
{
List<List<T>> list = new List<List<T>>();
for (int i = 0; i < items.Count; i += size)
list.Add(items.GetRange(i, Math.Min(size, items.Count - i)));
return list;
}
Créons une réponse générique. Celui qui fonctionne pour toute séquence de toute longueur, où vous souhaitez diviser la séquence en une séquence de sous-séquences, où chaque sous-séquence a une longueur spécifiée, sauf peut-être pour le dernier:
Par exemple: P> Par exemple: P> Par exemple: P> >
// Get all Students that live in New York, split them into groups of 10 Students // and return groups that have at least one Law Student var newYorkLasStudentGroups = GetStudents(); .OrderBy(student => student.UniversityLocation == "New York") .Split(10) .Where(studentGroup => studentGroup.Any(student => student.Study == "Law"));
Cette question n'est pas une duplication. Comme mentionné, je me demande une forme possible à l'aide de Linq qui serait plus performe. "Pour" liens avec "gamme", par exemple, je suis au courant de. P>
Merci à tous pour votre collaboration, vos commentaires et des solutions possibles !!! P>
@Rodrigo: J'ai formaté votre code pour le rendre lisible. Jetez un coup d'œil à votre question et explorez le bouton
{} code> de l'éditeur.LINQ est la méthode la plus rapide.
Dupliqué possible de diviser une liste dans des listes plus petites de N Taille a>
@ Flydog57, merci pour votre aide !!! Je suis nouveau ici comme un contributeur.
@jdweng, merci pour la collaboration!