//Modified at 2009-1-9 14:52:34@Scott public void Add(DBFilter appenededFilter) { if (appenededFilter == null || appenededFilter.Count == 0) { return; } DBFilter thisModifiedFilter = this.ModifyFilter(this); DBFilter modifiedAppenedFilter = this.ModifyFilter(appenededFilter); DBFilter resultFilter = new DBFilter(); foreach (DBCondition condition in thisModifiedFilter) { resultFilter.Add(condition.Copy()); } foreach (DBCondition condition in modifiedAppenedFilter) { resultFilter.Add(condition.Copy()); } this.InnerList.Clear(); foreach (DBCondition condition in resultFilter) { this.InnerList.Add(condition.Copy()); } }
//Modified at 2009-1-9 14:52:34@Scott public static DBFilter AttachedTwoFilterWithOr(DBFilter firstFilter, DBFilter secondFilter) { if (firstFilter == null) { firstFilter = new DBFilter(); } if (secondFilter == null) { secondFilter = new DBFilter(); } DBFilter resultFilter = new DBFilter(); foreach (DBCondition condition in firstFilter) { resultFilter.Add(condition.Copy()); } if (resultFilter.Count > 0) { resultFilter[resultFilter.Count - 1].FollowedOperand = FilterOperands.Or; } foreach (DBCondition condition in secondFilter) { resultFilter.Add(condition.Copy()); } return(resultFilter); }
private DBFilter ModifyFilter(DBFilter lastFilter) //2009-11-13 10:08:21@Simon Add this Code { if (lastFilter.Count <= 0) { return(lastFilter); } DBFilter newFilter = new DBFilter(); if (lastFilter[0].Bracket == Bracket.Start) { DBCondition condition = new DBCondition(); condition.ColumnName = string.Empty; condition.Bracket = Bracket.NONE; condition.FollowedOperand = FilterOperands.Or; newFilter.Add(condition); } foreach (DBCondition condition in lastFilter) { newFilter.Add(condition.Copy()); } newFilter._PlayAfter = lastFilter._PlayAfter; newFilter._Name = lastFilter._Name; if (newFilter[lastFilter.Count - 1].Bracket == Bracket.End) { newFilter[newFilter.Count - 1].FollowedOperand = FilterOperands.Or; DBCondition condition = new DBCondition(); condition.ColumnName = string.Empty; condition.Bracket = Bracket.NONE; condition.FollowedOperand = FilterOperands.And; newFilter.Add(condition); } else { newFilter[newFilter.Count - 1].FollowedOperand = FilterOperands.And; } if (newFilter.Count > 1) { newFilter[0].Bracket = Bracket.Start; newFilter[newFilter.Count - 1].Bracket = Bracket.End; } return(newFilter); }
public DBFilter Copy() { DBFilter newFilter = new DBFilter(); foreach (DBCondition condition in this) { newFilter.Add(condition.Copy()); } newFilter.PlayAfter = this.PlayAfter; newFilter._Name = this._Name; newFilter.IsCustomFilter = this.IsCustomFilter; return(newFilter); }