/// <summary> /// Filter what rows are included in the list based on the value of includeRemovedUsers. /// </summary> /// <param name="row">The row to examine.</param> /// <returns>False if IncludeRemovedUsers is false and the user has been removed; true otherwise.</returns> protected override bool Filter(DataRow row) { RightsHolderRow rightsHolderRow = null; UserRow[] userRow; if (row is RightsHolderRow) { rightsHolderRow = row as RightsHolderRow; } else if (row is EntityRow) { EntityRow entityRow = row as EntityRow; if (entityRow.GetRightsHolderRows().Length != 0) { rightsHolderRow = entityRow.GetRightsHolderRows()[0]; } } else { throw new RowNotHandledException("row isn't the right kind of row"); } userRow = rightsHolderRow.GetUserRows(); return(this.includeRemovedUsers || userRow.Length == 0 || !userRow[0].IsRemoved); }