using System.Collections.Generic;
public static void Main()
new Foo() {Weight = 1.2, Name = "1", Tdesc = 0.0},
new Foo() {Weight = 4.0, Name = "2", Tdesc=3.1},
new Foo() {Weight = 1.2, Name = "3", Tdesc = 1.1},
new Foo() {Weight = 4.0, Name = "4", Tdesc = 2.6}
var results = Test(data);
foreach(var result in results) {Console.WriteLine(result);}
public static IEnumerable<Foo> Test(IEnumerable<Foo> data)
return data.GroupBy(i => i.Weight, i=>i).
Select(g => g.OrderBy(i=>-1*i.Tdesc).First());
public double Weight{get;set;}
public string Name{get;set;}
public double Tdesc{get;set;}
public override string ToString()
return $"Name: {Name}; Weight: {Weight}; Tdesc: {Tdesc}";