Try something like this:
don't select p select a new[] and make sure that all items are string, if not convert them.
rows = (from p in storeDB.Products
where p.ProductID == id
select
new[] { Convert.ToString(p.Id), p.Name,
p.Description,p.Category, Convert.ToString(p.Value) };
).ToArray()
};