private int?GetSortedIndex(IView view) { if (_views.Count == 0) { return(null); } if (ViewComparer != null) { for (var i = 0; i < _views.Count; i++) { if (ViewComparer.Compare(view, _views[i]) < 0) { return(i); } } return(null); } if (ViewModelComparer != null) { for (var i = 0; i < _views.Count; i++) { if (ViewModelComparer.Compare(view.ViewModel, _views[i].ViewModel) < 0) { return(i); } } return(null); } if (ModelComparer != null) { for (var i = 0; i < _views.Count; i++) { if (ModelComparer.Compare(view.ViewModel?.Model, _views[i].ViewModel?.Model) < 0) { return(i); } } } return(null); }
void IEntityStoreOptions.UpdateFrom(EntityModel owner, IEntityStoreOptions other) { var from = (CqlStoreOptions)other; if (from != null && from.HasMaterializedView) { var mvComparer = new ViewComparer(); var addedViews = from.MaterializedViews.Except(MaterializedViews, mvComparer); foreach (var addedView in addedViews) { addedView.Import(); this.MaterializedViews.Add(addedView); } var removedViews = MaterializedViews.Except(from.MaterializedViews, mvComparer); foreach (var removedView in removedViews) { removedView.MarkDelete(); } // 暂不需要更新 // var otherViews = this.MaterializedViews.Intersect(from.MaterializedViews, mvComparer); // foreach (var otherView in otherViews) // { // otherView.UpdateFrom(from.MaterializedViews.Single(t => t.Name == otherView.Name)); // } } else { if (HasMaterializedView) { for (int i = 0; i < _materializedViews.Count; i++) { _materializedViews[i].MarkDelete(); } } } }
public RailView() { viewComparer = new ViewComparer(); latestUpdates = new Dictionary <EntityId, RailViewEntry>(); sortList = new List <KeyValuePair <EntityId, RailViewEntry> >(); }