using System.Collections.Generic;
public static void Main()
var originalList = new List<Selection>()
new Selection() {IdSelectionType = "1", Name = "Under (75.50)", Visible = true},
new Selection() {IdSelectionType = "2", Name = "Under (75.50)", Visible = true},
new Selection() {IdSelectionType = "1", Name = "Under (75.50)", OddValue = 1.840m, Visible = true},
new Selection() {IdSelectionType = "2", Name = "Under (75.50)", OddValue = 1.860m, Visible = true},
var endList = originalList.OrderBy(x => x.Name)
.ThenByDescending(x => x.OddValue)
.GroupBy(s => new {s.IdSelectionType, s.Name, s.Visible})
.Select(x => x.FirstOrDefault())
public string IdSelectionType {get; set;}
public string Name {get; set;}
public decimal? OddValue {get; set;}
public bool Visible {get; set;}