Строгое соответствие вашим критериям, используйте Dictionary
;
var dict = new Dictionary<string, Dictionary<string, object>>();
...
object view = dict["customer"]["help"];
Dictionary<string, object>.ValueCollection views = dict["customer"].Values;
То, что вы описываете, звучит как составной ключ в словаре, а не как два ключа. Я бы рекомендовал создать простую структуру для представления этого ключа:
struct Section {
string Area { get; set; }
string Area2 { get; set; }
// override ToHashCode, Equals and implement IComparable.
}