以下のコードを使用してIEnumerable
からいくつかのアイテムを取得しましたが、常にソースをnullとして返し、0としてカウントし、実際にはIEnumerable
にアイテムが存在します
private void GetItemsPrice(IEnumerable<Item> items, int customerNumber)
{
var a = items.Skip(2).Take(5);
}
a
にアクセスしようとすると、0
。ここで何か問題がありますか?
コードの変数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