Does a HashSet always execute an unexecuted ienumerable when the HashSet needed?

For example:

```
list = new List { 1 ..... 1000);

var linq = list.Where(x => x > 10);

var hashSet = new HashSet(linq);

```

Now when I call `hashSet.Contains(7)` in a `for loop` will the `hashSet` always execute the Where statement when needed?

```
for(int i = 0; i < 10000; ..)
{
  hashSet.Contains(7);
}

```