Sure, using reflection:
var QAprop = typeof(DatabaseListing).GetProperty("QA");
or to loop through all properties:
foreach(var prop in typeof(DatabaseListing).GetProperties())
string name = prop.Name;
From there you can get the property's type, attributes, etc.
You'd have to use reflection again to get the value:
distinctEnvironments.ForEach(x =>
names.Add(
x,
typeof(DatabaseListing).GetProperty(x)
.GetValue(DataBaseListings.FirstOrDefault(y => y.DatabaseName == "Review"), null)
)