For each row , if name column has some name then take tempVariable to append the contents of the next consecutive rows untill the name col has some value .
so , in the first iteration Name column has some name(User 1) so use variable to concatenate the contents of decription column and use add data row to add these text to the newly built DT.
What I meant there was that column one might have same Name multiple times.
So populating the empty cells in colum one willy nilly will confuse the logic since name data is not unique for every record.
Also, only thing i want was to merge those columns which are spreading their data into multiple lines keeping in mind that column one data can be used as a pointer to define a new record.
(From d In dtData.AsEnumerable
Group d By k=d("Name").toString.Trim Into grp=Group
Let dc = String.Join("",grp.Select(Function (x) x("Description")))
Let vc = String.Join("",grp.Select(Function (x) x("Vendor")))
Let ra = New Object(){k, grp.First()("Age"),grp.First()("Place"),dc,vc}
Select dtResult.Rows.Add(ra)).CopyToDataTable
As you can see the defect on isa vs is a, but needed concatenation without seperator for another vs. an other we do have some cases for doing a fine tuning