@Blunderbore: I don't think there's a built-in mechanism for this.
Because you store the data in classes (rather than in primitives like int or double), then when you 'copy' the data to a new collection, you are not actually copying the whole data, only a reference to the data; this means that copying is less of a problem.
If you want to combine the contents of two separate classes into a single source, then you can create a 'wrapper' class that takes two objects in it's constructor and exposes their properties as it's own. e,g,:
public class Wrapper
{
private ClassA _a;
private ClassB _b;
public Wrapper(ClassA a, ClassB b)
{
_a = a;
_b = b;
}
public double A
{
get
{
return _a.A;
}
set
{
_a.A = value;
}
}
// ... also for properties B, C & D
public double E
{
get
{
return _b.E;
}
set
{
_b.E = value;
}
}
}
This means you're not duplicating the original data (it's still sits in the original classes) but you can treat the wrapper class as a combined view.
However, you are going to have to manually create a new collection of these wrapper classes to present the new data for databinding.
Herbie