Люди задавали подобные вопросы раньше, поэтому я сделал это, объединив знания каждого:
var newlist<T2> = oldlist<T1>.GroupBy(g => g.distinct_var).Select(g => g.First()) //a
.Select(r=> new T2() {var1=r.va1, var2=r.var2 ...etc}).ToList(); //b
Что он делает:
а. Первая строка выбирает различные элементы по вашему выбору, что вы и хотели.
б. Вторая строка преобразует старый тип 1 в новый тип 2, создав новый список T2.
Может быть, перебил на ваш вопрос, просто отрубите вещи, которые вам не нужны.