The answers from Sehnsucht and Bjørn-Roger Kringsjå are accurate. The bottom line is that you use Select to create a result set, and then using Select again create a new result set based on the previous one. In your example, both result sets are identical, so this is the same as if you only used Select once.
To answer the second question, there may be times when you want to write your query more than using Select to facilitate readability or for some other reason. A trivial example might look like this:
Dim results = From item In New List(Of Integer) From {1, 2, 3} Where item > 1 Select item Where item < 3 Select item
which will return a set containing only the integer 2. Obviously, this can be written with one Select and one Where (using And ), but there may be times when your conditions are so complex that you want to separate them and not make them part of one sentence Where . Or there may be other things you want to do that require you to split the application into smaller parts.
Generally speaking, this kind of thing is of little use, but it is good that LINQ allows this if you have a need.
source share