Elie,
The only way of doing this that comes to my mind (since there is no possibility to instantiate InfoTableFunctions on the Edge with Edge SDK) is to invoke Intersect directly (you need to have permissions on your App Key of course):
// ValueCollection is object to hold input parameters to service Intersect
ValueCollection params = new ValueCollection();
params.SetInfoTableValue("t1", new InfoTable()); // here instead of new InfoTable() put your first IT
params.SetImageValue("t2", new InfoTable()); // here instead of new InfoTable() put your second IT
params.SetStringValue("joinColumns1", "ID");
params.SetStringValue("joinColumns2", "ID");
params.SetStringValue("joinType", "LEFT");
params.SetStringValue("columns1", "ID");
params.SetStringValue("columns2", "Name");
// client is instance of ConnectedThingClient, successfully started and CONNECTED (you should check if client.isConnected() before)
// the parameters are: (EntityType, EntityName, ServiceName, InputParameters, Timeout)
InfoTable result = client.invokeService(ThingworxEntityTypes.Resources, "InfoTableFunctions", "Intersect", params, 1000);
Hope that helps. If so, you can mark my answer as a correct one for the reference of others.
Regards,
J.