this:
dogId 1
fatherId 5
dateOfBirth 01/01/2005
dogId 2
fatherId 5
dateOfBirth 01/01/2005
dogId 3
fatherId 5
dateOfBirth 01/01/2006
dogId 4
fatherId 5
dateOfBirth 01/01/2006
would translate into
select dogid, dateofbirth
from dog
where fatherid = 5
order by dateofbirth
this produces the following result set
dogid dateofbirth
----- -----------
1 1-1-05
2 1-1-05
3 1-1-06
4 1-1-06
you could group in a heirachy, but that must be done in code
dogcollection = result set
datatable birthdays = new datatable("birthdays");
birthdays.columns.add("dateofbirth", typeof(datetime));
birthdays.primarykey = new datacolumn[] { birthdays.columns[0] };
datatable dogs = new datatable("dogs");
dogs.columns.add("dogid", typeof(int));
dogs.columns.add("dateofbirth", typeof(datetime));
dogs.primarykey = new datacolumn[] { dogs.columns[0] };
datarelation relation = new datarelation(birthdays.column[0], dogs.column[1]);
dataset ds = new dataset();
ds.tables.add(birthdays);
ds.tables.add(dogs);
ds.relations.add(relation);
foreach (dog in dogcollection)
{
if (!birthdays.Find(dog.dateofbirth))
{
birthdays.rows.add(new object[] { dog.dateofbirth });
}
dogs.add(new object[] { dog.id, dog.dateofbirth });
}
return ds;