using System.Collections.Generic;
public static void Main()
List<obj> lsobjdata = new List<obj>
new obj { Name = "xyz", PropertyName = "Volume", Id= 1, Value = 25 },
new obj { Name = "abc", PropertyName = "Volume", Id= 1, Value = 23 },
new obj {Name = "abc", PropertyName = "Oil", Id =1, Value = 45},
new obj { Name = "xyz", PropertyName = "Volume", Id= 2, Value = 25 },
new obj { Name = "abc", PropertyName = "Volume", Id= 2, Value = 23 },
var results = lsobjdata.GroupBy(x => new { x.Id, x.PropertyName })
.Select(x => x.OrderByDescending(z => z.Name).FirstOrDefault());
foreach (var item in results)
Console.WriteLine("Id : {0}",item.Id);
Console.WriteLine("Name : {0}",item.Name);
Console.WriteLine("PropertyName : {0}",item.PropertyName);
public string PropertyName;