выглядит довольно аккуратно для меня.Если вы хотите немного сплющить вещи, вы можете использовать метод расширения Cast
(который работает с типами IEnumerable
для преобразования их в IEnumerable<T>
) в , чтобы сделать вещи более LINQy.Это делает вещи более понятными для одних, более непрозрачными для других.Выберите.
var reportOrDataApps = serverManager
.Sites
.Cast<Site>()
.SelectMany(s => s.Applications.Cast<Application>())
.Where(app => app.Path.EndsWith("Report") || app.Path.EndsWith("Data"))
foreach(var app in reportOrDataApps)
{
Trace.WriteLine("ReportApi " + app.ApplicationPoolName);
applicationPoolCollection[app.ApplicationPoolName].Enable32BitAppOnWin64 = true;
applicationPoolCollection[app.ApplicationPoolName].ManagedRuntimeVersion = "v4.0";
}
РЕДАКТИРОВАТЬ:
Похоже, что коллекции уже реализуют IEnumerable<T>
, поэтому вы можете сократить LINQ:
var reportOrDataApps = serverManager
.Sites
.SelectMany(s => s.Applications)
.Where(app => app.Path.EndsWith("Report") || app.Path.EndsWith("Data"))