Since name
is a common column name for both tables, you have to give an alias in your query to any of them. If you do not provide one, it will provided automatically one for the repeated fields, in that case appending a "1".
In addition, c.
and p.
are only internal alias for your query but they not form part of the returning column names.
In your SQL query put the alias (at least one of them)
SELECT p.name as parent_name, c.name as child_name, ….
And in your C# code use the proper columns
var parentName = row["parent_name"];
var childName = row["child_name"];