J'ai utilisé le code ci-dessous pour prendre certains éléments de IEnumerable
, mais il renvoie toujours la source comme nulle et compte comme 0 et en fait il existe des éléments dans IEnumerable
private void GetItemsPrice(IEnumerable<Item> items, int customerNumber)
{
var a = items.Skip(2).Take(5);
}
Lorsque j'essaie d'accéder à a
, il compte 0
. Quelque chose ne va pas ici?
N'oubliez pas que cette variable a
dans votre code est un requête elle-même. Ce n'est pas résultat de l'exécution de la requête. Lorsque vous utilisez la fenêtre immédiate pour surveiller la requête (en fait, cela concerne les requêtes dont l'exécution est différée, sinon vous obtiendrez des résultats au lieu de la requête), elle s'affichera toujours.
{System.Linq.Enumerable.TakeIterator<int>}
count: 0
source: null
Vous pouvez vérifier cela avec ce code, qui contient évidemment suffisamment d'éléments:
int[] items = { 1, 2, 3, 4, 5, 6, 7 };
var a = items.Skip(2).Take(3);
Donc, vous devez exécuter votre requête pour voir résultats de l'exécution de la requête. Écrivez dans la fenêtre immédiate:
a.ToList()
Et vous verrez les résultats de l'exécution de la requête:
Count = 3
[0]: 3
[1]: 4
[2]: 5