Why are you trying to group by a new product? All that will do is attempt to group by the reference value itself, won't it? Which would explain the 1:1 correlation between groups and products. :laugh:
Don't you want something like:
var groups = products.GroupBy(p => p.TariffDescription);
or similar?
[edit]
A quick test:
public class MyClass
{
public int Value { get; set; }
public string Name { get; set; }
}
And
List<MyClass> list = new List<MyClass>();
MyClass a = new MyClass() { Value = 1, Name = "A" };
MyClass b = new MyClass() { Value = 1, Name = "B" };
MyClass c = new MyClass() { Value = 2, Name = "C" };
MyClass d = new MyClass() { Value = 2, Name = "D" };
MyClass e = new MyClass() { Value = 3, Name = "E" };
list.Add(a);
list.Add(b);
list.Add(c);
list.Add(d);
list.Add(e);
var g1 = list.GroupBy(m => m.Value);
var g2 = list.GroupBy(m => new MyClass { Value = m.Value, Name = m.Name });
Console.WriteLine(g1.Count() + ":" + g2.Count());
Gives "3:5"
Adding the IEquatable interface doesn't change that either:
public class MyClass : IEquatable<MyClass>
{
public int Value { get; set; }
public string Name { get; set; }
public bool Equals(MyClass other)
{
return Value == other.Value;
}
}
I still get 3:5
[/edit]