public IHtmlString With(AclEditModel model, string fieldName) { return(Html.Partial <Views.AccessControlList.Acl>().WithModel( new AccessControlListModel { Parameters = new AccessControlListParameters { Html = Html, FieldName = fieldName, SubjectSelector = model.SubjectSelector(Html) }, InitialEntries = (from t in model.Entries let target = t.Key from e in t.Where(FilterNullSubjects) group new { target, e } by e.Entry.Subject into subj let es = subj.Select(e => new { tp = TargetPrivilege.Pair(e.target, e.e.Entry.Privilege.SID, null), e = e.e }) select new PrivilegesListModel { Subject = subj.Key, OwnEntries = es.Where(e => e.e.InheritedFrom == null).Select(e => Pair.Create(e.tp, e.e.Entry.Kind)), InheritedEntries = es.Where(e => e.e.InheritedFrom != null).Select(e => Pair.Create(e.tp, new InheritedPrivilegeModel { Kind = e.e.Entry.Kind, InheritedFrom = e.e.InheritedFrom })) } ).ToList(), PrivilegeEditors = model.PrivilegeEditors })); }