如何按名称订购SiteCollection

时间:2015-08-18 13:50:17

标签: c# ienumerable

我想按名称订购Microsoft.Web.Administration.SiteCollection:

ServerManager iisManager = ServerManager.OpenRemote(Vm.CurrentServeur);
SiteCollection websites = iisManager.Sites.OrderBy(x => x.Name);

但我收到以下错误:

  

无法隐式转换类型&System; .Linq.IOrderedEnumerable'到' Microsoft.Web.Administration.SiteCollection'

如何订购SiteCollection?

2 个答案:

答案 0 :(得分:2)

由于SiteCollection没有构造函数,因此您无法创建它。您可以使用它的方法ClearAdd

SiteCollection websites = iisManager.Sites;
List<Site> orderedSites = websites.OrderBy(x => x.Name).ToList();
websites.Clear();
foreach(Site s in orderedSites)
    websites.Add(s);

这会修改原始SiteCollection。如果您根本不需要它,可以使用IEnumerable<Site>或直接使用列表:

List<Site> webSites = iisManager.Sites.OrderBy(x => x.Name).ToList<Site>();

答案 1 :(得分:1)

我建议你添加ToList

iisManager.Sites.OrderBy(x => x.Name).ToList();