Hi,
If you taking a helicopter view then all are same.
but if you dig into details then you could found some difference between them in terms of performance
1st :
List<int> idList = new List<int>() {1,2,3,4,5,7,8,9,-1};
initialization of List<int> with pre-define list
2nd :
List<int> validIdList = idList.Where(x => x > 5).Select(x=> x).ToList();
Now you selecting specific values depending on criteria then create a new list with selected items with out any type casting as you know its already a List<int> so it will take little more time then pre-define list.
3rd :
List<int> validIdList = idList.Where(x => x > 5).Select(x=> x).ToList<int>();
Now in this statement you again selecting elements using some criteria and creating and new list using implicit casting to Int32 so it will take some more time then 2nd statement but its more type safe then 2nd but if you already know its a List<int> then why you need type cast.
Those are the basic difference in terms of performance, in terms of memory allocation in 1st it will allocate more memory the others.