protected LiteFilter GetFilterForMultiColumns(string tableAlias, string fields, object o) { List <string> list = (from p in fields.Split(new char[] { ',' }) where !string.IsNullOrEmpty(p) select p).ToList <string>(); LiteFilter filter = LiteFilter.False(); foreach (string str in list) { filter = filter.Or(FilterField.New(tableAlias, str).Contains(o)); } return(filter); }
protected LiteFilter GetFilterForMultiValues(string tableAlias, string fieldName, object o) { List <int> list = (from p in Convert.ToString(o).Split(new char[] { ',' }) select p.ToIntNullable() into p where p.HasValue select p.Value).ToList <int>(); LiteFilter filter = LiteFilter.False(); foreach (int num in list) { filter = filter.Or(FilterField.New(tableAlias, fieldName).Equal(num)); } return(filter); }
private void VisitFilter(LiteFilter filter) { if ((filter.filterType == FilterTypeEnum.AND) || (filter.filterType == FilterTypeEnum.OR)) { int realChildCount = filter.GetRealChildCount(); if (realChildCount >= 2) { string str = (filter.filterType == FilterTypeEnum.AND) ? " AND " : " OR "; int num2 = -1; foreach (LiteFilter filter2 in filter.ChildFilters) { if (filter2.GetRealNodeCount() > 0) { num2++; if (num2 > 0) { this.sb.Append(str); } this.sb.Append("("); this.VisitFilter(filter2); this.sb.Append(")"); } } } else if (realChildCount == 1) { foreach (LiteFilter filter2 in filter.ChildFilters) { if (filter2.GetRealNodeCount() > 0) { this.VisitFilter(filter2); } } } } else { this.VisitConditionFilter(filter); } }
public override DataTable Query() { var q = LiteQuery.New("T_User", "a"); q.SelectFields.Add(LiteField.NewEntityField("a", "User_ID")); q.SelectFields.Add(LiteField.NewEntityField("a", "User_Name")); q.SelectFields.Add(LiteField.NewEntityField("a", "User_Code")); q.SelectFields.Add(LiteField.NewEntityField("a", "Department_ID")); q.SelectFields.Add(LiteField.NewEntityField("a", "User_Mobile")); var subQ = GetRefSubQuery("T_Department", "Department_ID", "Department_Name", "a", "Department_ID"); q.SelectFields.Add(LiteField.NewSubQueryField(subQ, "Department_ID_V")); q.Filter = LiteFilter.True(); if (!string.IsNullOrEmpty(this.UserName)) { var fUserName = FilterField.New("a", "User_Name").Contains(this.UserName); q.Filter = q.Filter.And(fUserName); } if (!string.IsNullOrEmpty(this.UserCode)) { var fUserCode = FilterField.New("a", "User_Code").Contains(this.UserCode); q.Filter = q.Filter.And(fUserCode); } if (this.DepartmentId != null) { var fDeptId = FilterField.New("a", "Department_ID").Equal(this.DepartmentId.Value); q.Filter = q.Filter.And(fDeptId); } AddFilterForPrevilege(q); AddFilterForShared(q); q.SkipNumber = this.PageIndex * this.PageSize; q.TakeNumber = this.PageSize; return(this.DataHelper.ExecuteLiteQuery(q)); }
private void VisitTwoVarFilter(LiteFilter filter, string compareOP) { this.VisitFilterVariable(filter.LeftVar); this.sb.Append(compareOP); this.VisitFilterVariable(filter.RightVar); }
private void VisitConditionFilter(LiteFilter filter) { switch (filter.compareType) { case CompareTypeEnum.LessThan: this.VisitTwoVarFilter(filter, "< "); break; case CompareTypeEnum.LessThanOrEqual: this.VisitTwoVarFilter(filter, "<= "); break; case CompareTypeEnum.Equal: this.VisitTwoVarFilter(filter, "= "); break; case CompareTypeEnum.GreaterThanOrEqual: this.VisitTwoVarFilter(filter, ">= "); break; case CompareTypeEnum.GreaterThan: this.VisitTwoVarFilter(filter, "> "); break; case CompareTypeEnum.EndWith: this.VisitFilterVariable(filter.LeftVar); if (filter.RightVar.VariableType != VariableTypeEnum.Const) { throw new ApplicationException("EndWith只支持常量"); } this.sb.AppendFormat(" like '%{0}' escape '/' ", filter.RightVar.ConstValue.ToString().Replace("'", "''").Replace("%", "/%").Replace("_", "/_")); break; case CompareTypeEnum.StartWith: this.VisitFilterVariable(filter.LeftVar); if (filter.RightVar.VariableType != VariableTypeEnum.Const) { throw new ApplicationException("StartWith只支持常量"); } this.sb.AppendFormat(" like '{0}%' escape '/' ", filter.RightVar.ConstValue.ToString().Replace("'", "''").Replace("%", "/%").Replace("_", "/_")); break; case CompareTypeEnum.Contains: this.VisitFilterVariable(filter.LeftVar); if (filter.RightVar.VariableType != VariableTypeEnum.Const) { throw new ApplicationException("Contains只支持常量"); } this.sb.AppendFormat(" like '%{0}%' escape '/' ", filter.RightVar.ConstValue.ToString().Replace("'", "''").Replace("%", "/%").Replace("_", "/_")); break; case CompareTypeEnum.NotEqual: this.VisitTwoVarFilter(filter, "<> "); break; case CompareTypeEnum.FullText: this.sb.Append(" contains(("); this.VisitFilterVariable(filter.LeftVar); this.sb.Append("),'"); this.sb.Append(this.GetFullTextValueString(filter.RightVar.ConstValue.ToString(), filter.LeftVar.FullTextType)); this.sb.Append("')"); break; case CompareTypeEnum.IN: this.VisitTwoVarFilter(filter, "in "); break; case CompareTypeEnum.IsNull: this.VisitFilterVariable(filter.LeftVar); this.sb.Append(" IS NULL "); break; case CompareTypeEnum.IsNotNull: this.VisitFilterVariable(filter.LeftVar); this.sb.Append(" IS NOT NULL "); break; } }