One way to do this is to use LINQ. To query the data, the code could be something like:
var result = from row1 in ds1.tables[0].AsEnumerable()
join row2 in ds2.tables[0].AsEnumerable()
on row1.Field<decimal>("ID")
equals row2.Field<decimal>("ID")
select row1;
The select portion in the example selects only the row1 in whole but you should modify it to fetch the desired results.
When the query is finished, you can use
CopyToDataTable
method to add the data into a new table.