24

我使用下面的代码从中获取一些项目IEnumerable,但它始终将源返回为 null 并计数为 0,实际上存在项目IEnumerable

private void GetItemsPrice(IEnumerable<Item> items, int customerNumber)
{
    var a = items.Skip(2).Take(5);
}

当我尝试访问a它时,它有计数0。这里有什么问题吗?

在此处输入图像描述

4

1 回答 1

36

请记住,a代码中的变量本身就是一个查询。它不是查询执行的结果。当您使用即时窗口观看查询时(实际上这与延迟执行的查询有关,否则您将得到结果而不是查询),它将始终显示

{System.Linq.Enumerable.TakeIterator<int>}
    count: 0
    source: null

您可以使用这段代码来验证这一点,它显然有足够的项目:

int[] items = { 1, 2, 3, 4, 5, 6, 7 };
var a = items.Skip(2).Take(3);

因此,您应该执行查询以查看查询执行的结果。在立即窗口中写入:

a.ToList()

您将看到查询执行的结果:

Count = 3
    [0]: 3
    [1]: 4
    [2]: 5
于 2013-03-13T13:12:35.880 回答