Property Mapping with Reflection efficiency
Well to start with reflection is incredibly slow.  And second I'm not even sure why you're using reflection to begin with since you have the strongly typed Location.  Don't use reflection.  I don't think you need to compare every single property.  Pick only the ones that could possibly match.

If you insist on using reflection here's a faster impl:

private static readonly locationProperties = typeof(Location).GetProperties();

foreach (PropertyInfo propertyInfo in locationProperties)
{
    var value = propertyInfo.GetValue(location);
    if (value != null)
    {
        LocationLookupModel model = allLocations.FirstOrDefault(a.Code == value.ToString());
        if (model != null)
        {
            modelList.Add(model);
        }
    }
}


Without reflection:

private static List&lt;LocationLookupModel&gt; PopulateLocation(Location location)
{
    List&lt;LocationLookupModel&gt; allLocations = new List&lt;LocationLookupModel&gt;();
    if (HttpContext.Current.Session["LocationModel"] == null)
        HttpContext.Current.Session["LocationModel"] = allLocations = new LocationModel().LocationList;
    else
        allLocations = List&lt;LocationLookupModel&gt;)HttpContext.Current.Session["LocationModel"];
    return allLocations.Select(x =&gt; x.Code == location.city || x.Code == location.country || x.Code == location.county || x.Code == location.locality || x.Code == location.metro || x.Code == location.region || x.Code == location.state || x.Code == location.zipcode).ToList();
}