Я использую замену везде, где я могу. Я только использую конкатенацию, если я расту, строка в говорят для цикла.
Попробуйте это, если вам нужны значения:
var settings = System.Web.Configuration.WebConfigurationManager.AppSettings;
var query = from string q in settings.Keys
where q.StartsWith("Foo")
select settings[q];
Может быть, потому что KeysCollection реализует только IEnumerable, а не IEnumerable
var query = from q in System.Web.Configuration.WebConfigurationManager.AppSettings.Keys.Cast<string>()
where q.StartsWith("Foo")
select q;