Maybe...
ht.Add("p", new Products { P_Name = "productA", P_Price = 20 });
ht.Add("p2", new Products { P_Name = "productB", P_Price = 20 });
dataGridView1.DataSource = ht.Cast<dictionaryentry>()
.Select(x => new
{
Colum = x.Key.ToString(),
Colum1 = x.Value.P_Name.ToString(),
Column2 = x.Value.P_Price.ToString()
})
.ToList();