public void LinqCreateNotLikeConditionTest() { AbstractDatabase fakeDb = DatabaseFactory.CreateDatabase("", "System.Data.SqlClient") as AbstractDatabase; SelectCommand expectedCommand = fakeDb.CreateSelectCommand(""); SelectCommand actualCommand = fakeDb.CreateSelectCommand(""); SqlConditionBuilder expectedConditionBuilder = expectedCommand.ConditionBuilder; SqlBasicParameterCondition expectedCondition = expectedConditionBuilder.NotLike("TestColumn1", "test1"); SqlBasicParameterCondition actualCondition = SqlLinqCondition.Create <TestEntity>(actualCommand, c => c.Test1.NotLike("test1")) as SqlBasicParameterCondition; Assert.AreEqual(expectedCondition, actualCondition); SqlBasicParameterCondition expectedCondition2 = expectedConditionBuilder.NotLikeAll("TestColumn1", "test2"); SqlBasicParameterCondition actualCondition2 = SqlLinqCondition.Create <TestEntity>(actualCommand, c => c.Test1.NotLikeAll("test2")) as SqlBasicParameterCondition; Assert.AreEqual(expectedCondition2, actualCondition2); SqlBasicParameterCondition expectedCondition3 = expectedConditionBuilder.NotLikeStartWith("TestColumn1", "test3"); SqlBasicParameterCondition actualCondition3 = SqlLinqCondition.Create <TestEntity>(actualCommand, c => c.Test1.NotLikeStartWith("test3")) as SqlBasicParameterCondition; Assert.AreEqual(expectedCondition3, actualCondition3); SqlBasicParameterCondition expectedCondition4 = expectedConditionBuilder.NotLikeEndWith("TestColumn1", "test4"); SqlBasicParameterCondition actualCondition4 = SqlLinqCondition.Create <TestEntity>(actualCommand, c => c.Test1.NotLikeEndWith("test4")) as SqlBasicParameterCondition; Assert.AreEqual(expectedCondition4, actualCondition4); }
/// <summary> /// 设置指定的查询语句并返回当前语句 /// </summary> /// <param name="command">选择语句</param> /// <param name="topics">主题列表</param> /// <param name="includeHide">是否包含隐藏主题</param> /// <returns>当前语句</returns> internal static SelectCommand Where(this SelectCommand command, IList <ForumTopicEntity> topics, Boolean includeHide) { SqlConditionBuilder c = command.ConditionBuilder; AbstractSqlCondition condition = command.WhereCondition as AbstractSqlCondition; AbstractSqlCondition temp = null; if (!includeHide) { temp = c.Equal(ForumPostRepository.ISHIDE, false); condition = (condition == null ? temp : condition & temp); } if (topics != null) { temp = c.In <Int32>(ForumPostRepository.TOPICID, () => { List <Int32> ids = new List <Int32>(); for (Int32 i = 0; i < topics.Count; i++) { ids.Add(topics[i].TopicID); } return(ids); }); condition = (condition == null ? temp : condition & temp); } return(command.Where(condition)); }
public void CreateNullableConditionTest() { AbstractDatabase fakeDb = DatabaseFactory.CreateDatabase("", "System.Data.SqlClient") as AbstractDatabase; SelectCommand baseCommand = fakeDb.CreateSelectCommand(""); SqlConditionBuilder conditionBuilder = baseCommand.ConditionBuilder; AbstractSqlCondition baseCondition = conditionBuilder.Equal("TestColumn2", 1); AbstractSqlCondition expectedCondition = baseCondition & null; AbstractSqlCondition actualCondition = baseCondition; Assert.AreEqual(expectedCondition, actualCondition); AbstractSqlCondition expectedCondition2 = null & baseCondition; AbstractSqlCondition actualCondition2 = baseCondition; Assert.AreEqual(expectedCondition2, actualCondition2); AbstractSqlCondition expectedCondition3 = baseCondition | null; AbstractSqlCondition actualCondition3 = baseCondition; Assert.AreEqual(expectedCondition3, actualCondition3); AbstractSqlCondition expectedCondition4 = null | baseCondition; AbstractSqlCondition actualCondition4 = baseCondition; Assert.AreEqual(expectedCondition4, actualCondition4); }
/// <summary> /// 设置指定的查询语句并返回当前语句 /// </summary> /// <param name="command">选择语句</param> /// <param name="type">主题类型</param> /// <param name="relativeID">相关ID</param> /// <param name="includeHide">是否包含隐藏主题</param> /// <returns>当前语句</returns> internal static SelectCommand Where(this SelectCommand command, ForumTopicType type, Int32 relativeID, Boolean includeHide) { SqlConditionBuilder c = command.ConditionBuilder; AbstractSqlCondition condition = command.WhereCondition as AbstractSqlCondition; AbstractSqlCondition temp = null; //不包含隐藏 if (!includeHide) { temp = c.Equal(ForumTopicRepository.ISHIDE, false); condition = (condition == null ? temp : condition & temp); } if (type == ForumTopicType.Default) //普通讨论板中包括题目专属讨论板的帖子 { temp = c.LessThan(ForumTopicRepository.TYPE, (Byte)ForumTopicType.Contest); //普通0,题目1,竞赛2 condition = (condition == null ? temp : condition & temp); } else//竞赛或题目专属讨论板只有专属帖子 { temp = c.Equal(ForumTopicRepository.TYPE, (Byte)type) & c.Equal(ForumTopicRepository.RELATIVEID, relativeID); condition = (condition == null ? temp : condition & temp); } return(command.Where(condition)); }
/// <summary> /// 设置指定的查询语句并返回当前语句 /// </summary> /// <param name="command">相关语句</param> /// <param name="ids">逗号分隔的实体ID</param> /// <param name="cid">竞赛ID</param> /// <param name="pid">题目ID</param> /// <param name="userName">用户名</param> /// <param name="languageType">提交语言</param> /// <param name="resultType">提交结果</param> /// <param name="startDate">开始时间</param> /// <param name="endDate">结束时间</param> /// <returns>当前语句</returns> internal static T Where <T>(this T command, String ids, Int32 cid, Int32 pid, String userName, LanguageType languageType, ResultType?resultType, DateTime?startDate, DateTime?endDate) where T : AbstractSqlCommandWithWhere { SqlConditionBuilder c = command.ConditionBuilder; AbstractSqlCondition condition = command.WhereCondition as AbstractSqlCondition; AbstractSqlCondition temp = null; //提交ID if (!String.IsNullOrEmpty(ids)) { temp = c.InInt32(SolutionRepository.SOLUTIONID, ids, ','); condition = (condition == null ? temp : condition & temp); } //竞赛ID if (cid >= 0) { temp = c.Equal(SolutionRepository.CONTESTID, cid); condition = (condition == null ? temp : condition & temp); } //题目ID if (pid >= 0) { temp = c.Equal(SolutionRepository.PROBLEMID, pid); condition = (condition == null ? temp : condition & temp); } //用户名 if (!String.IsNullOrEmpty(userName)) { temp = c.Equal(SolutionRepository.USERNAME, userName); condition = (condition == null ? temp : condition & temp); } //提交程序语言 if (!LanguageType.IsNull(languageType)) { temp = c.Equal(SolutionRepository.LANGUAGE, languageType.ID); condition = (condition == null ? temp : condition & temp); } //提交结果 if (resultType.HasValue) { temp = c.Equal(SolutionRepository.RESULT, (Byte)resultType.Value); condition = (condition == null ? temp : condition & temp); } //开始时间 if (startDate.HasValue || endDate.HasValue) { temp = c.BetweenNullable <DateTime>(SolutionRepository.SUBMITTIME, startDate, endDate); condition = (condition == null ? temp : condition & temp); } command.Where(condition); return(command); }
//todo: support for IN expression //[TestCase(typeof(PropertyIsIn), "SomeColumn IN (1, 2, 3, 4, 5)", "SomeColumn", "(1, 2, 3, 4, 5)")] public void TestComparisonExpressions(Type comparisonType, string conditionString, string column, string literal) { var builder = new SqlConditionBuilder(log); ISqlConditionExpression condition = builder.Build(conditionString); Assert.IsNotNull(condition); TestComparisonType(comparisonType, condition, column, literal); }
public void Reversed_Parse_Test() { var binaryTreeBuilder = new SqlConditionBuilder(log); ISqlConditionExpression conditionBinaryTree = binaryTreeBuilder.Build(ExpZeros); var sqlStringBuilder = new SqlServerConditionStringBuilder(); IUncheckedSqlCondition uncheckedSqlCondition = sqlStringBuilder.Build(conditionBinaryTree); Assert.AreEqual(Expected, uncheckedSqlCondition.SqlConditionString); }
public void R_Test(Type gate, string conditionString) { var builder = new SqlConditionBuilder(log); ISqlConditionExpression condition = builder.Build(conditionString); Assert.IsNotNull(condition); Assert.IsInstanceOf <RightSideExpression>(condition); Assert.IsInstanceOf(gate, condition); }
public void LinqCreateNotInConditionTest() { AbstractDatabase fakeDb = DatabaseFactory.CreateDatabase("", "System.Data.SqlClient") as AbstractDatabase; SelectCommand expectedCommand = fakeDb.CreateSelectCommand(""); SelectCommand actualCommand = fakeDb.CreateSelectCommand(""); SqlConditionBuilder expectedConditionBuilder = expectedCommand.ConditionBuilder; SqlInsideParametersCondition expectedCondition = expectedConditionBuilder.NotInThese("TestColumn1", "1"); SqlInsideParametersCondition actualCondition = SqlLinqCondition.Create <TestEntity>(actualCommand, c => c.Test1.NotInThese("1")) as SqlInsideParametersCondition; Assert.AreEqual(expectedCondition, actualCondition); SqlInsideParametersCondition expectedCondition2 = expectedConditionBuilder.NotInThese("TestColumn1", "1", "2", "3", "4", "5"); SqlInsideParametersCondition actualCondition2 = SqlLinqCondition.Create <TestEntity>(actualCommand, c => c.Test1.NotInThese("1", "2", "3", "4", "5")) as SqlInsideParametersCondition; Assert.AreEqual(expectedCondition2, actualCondition2); SqlInsideParametersCondition expectedCondition3 = expectedConditionBuilder.NotInThese("TestColumn2", 1, 2, 3, 4, 5); SqlInsideParametersCondition actualCondition3 = SqlLinqCondition.Create <TestEntity>(actualCommand, c => c.Test2.NotInThese(1, 2, 3, 4, 5)) as SqlInsideParametersCondition; Assert.AreEqual(expectedCondition3, actualCondition3); SqlInsideParametersCondition expectedCondition4 = expectedConditionBuilder.NotInThese("TestColumn5", 1, 2, 3, 4, 5); SqlInsideParametersCondition actualCondition4 = SqlLinqCondition.Create <TestEntity>(actualCommand, c => c.Test5.NotInThese(1, 2, 3, 4, 5)) as SqlInsideParametersCondition; Assert.AreEqual(expectedCondition4, actualCondition4); TestEntityRepository repository = new TestEntityRepository(fakeDb); TestEntity entity = new TestEntity() { Test1 = "1", Test2 = 2, Test3 = 3.0, Test4 = DateTime.Now, Test8 = 8 }; SqlInsideCommandCondition expectedCondition5 = expectedConditionBuilder.NotIn("TestColumn4", repository.TableName, s => { s.Query("TestColumn4") .Paged(10, 2) .Where <TestEntity>(c => c.Test1 == "test" && c.Test2 != 222 && c.Test4 < DateTime.Now) .OrderBy <TestEntity>(c => c.Test3, SqlOrderType.Desc); }); Action <SelectCommand> createAnotherSelect = s => { s.Query("TestColumn4") .Paged(10, 2) .Where <TestEntity>(sc => sc.Test1 == "test" && sc.Test2 != 222 && sc.Test4 < DateTime.Now) .OrderBy <TestEntity>(sc => sc.Test3, SqlOrderType.Desc); }; SqlInsideCommandCondition actualCondition5 = SqlLinqCondition.Create <TestEntity>(actualCommand, c => c.Test4.NotIn <TestEntity>(createAnotherSelect)) as SqlInsideCommandCondition; Assert.AreEqual(expectedCondition5, actualCondition5); }
public void LinqCreateBasicConditionTest() { AbstractDatabase fakeDb = DatabaseFactory.CreateDatabase("", "System.Data.SqlClient") as AbstractDatabase; SelectCommand expectedCommand = fakeDb.CreateSelectCommand(""); SelectCommand actualCommand = fakeDb.CreateSelectCommand(""); SqlConditionBuilder expectedConditionBuilder = expectedCommand.ConditionBuilder; SqlBasicParameterCondition expectedCondition = expectedConditionBuilder.Equal("TestColumn2", 123); SqlBasicParameterCondition actualCondition = SqlLinqCondition.Create <TestEntity>(actualCommand, c => c.Test2 == 123) as SqlBasicParameterCondition; Assert.AreEqual(expectedCondition, actualCondition); SqlBasicParameterCondition expectedCondition2 = expectedConditionBuilder.NotEqual("TestColumn2", 123); SqlBasicParameterCondition actualCondition2 = SqlLinqCondition.Create <TestEntity>(actualCommand, c => c.Test2 != 123) as SqlBasicParameterCondition; Assert.AreEqual(expectedCondition2, actualCondition2); SqlBasicParameterCondition expectedCondition3 = expectedConditionBuilder.GreaterThan("TestColumn2", 123); SqlBasicParameterCondition actualCondition3 = SqlLinqCondition.Create <TestEntity>(actualCommand, c => c.Test2 > 123) as SqlBasicParameterCondition; Assert.AreEqual(expectedCondition3, actualCondition3); SqlBasicParameterCondition expectedCondition4 = expectedConditionBuilder.LessThan("TestColumn2", 123); SqlBasicParameterCondition actualCondition4 = SqlLinqCondition.Create <TestEntity>(actualCommand, c => c.Test2 < 123) as SqlBasicParameterCondition; Assert.AreEqual(expectedCondition4, actualCondition4); SqlBasicParameterCondition expectedCondition5 = expectedConditionBuilder.GreaterThanOrEqual("TestColumn2", 123); SqlBasicParameterCondition actualCondition5 = SqlLinqCondition.Create <TestEntity>(actualCommand, c => c.Test2 >= 123) as SqlBasicParameterCondition; Assert.AreEqual(expectedCondition5, actualCondition5); SqlBasicParameterCondition expectedCondition6 = expectedConditionBuilder.LessThanOrEqual("TestColumn2", 123); SqlBasicParameterCondition actualCondition6 = SqlLinqCondition.Create <TestEntity>(actualCommand, c => c.Test2 <= 123) as SqlBasicParameterCondition; Assert.AreEqual(expectedCondition6, actualCondition6); SqlBasicParameterCondition expectedCondition7 = expectedConditionBuilder.IsNotNull("TestColumn1"); SqlBasicParameterCondition actualCondition7 = SqlLinqCondition.Create <TestEntity>(actualCommand, c => c.Test1 != null) as SqlBasicParameterCondition; Assert.AreEqual(expectedCondition7, actualCondition7); SqlBasicParameterCondition expectedCondition8 = expectedConditionBuilder.IsNull("TestColumn3"); SqlBasicParameterCondition actualCondition8 = SqlLinqCondition.Create <TestEntity>(actualCommand, c => c.Test3 == null) as SqlBasicParameterCondition; Assert.AreEqual(expectedCondition8, actualCondition8); SqlBasicParameterCondition expectedCondition10 = expectedConditionBuilder.EqualColumn("TestColumn2", "TestColumn3"); SqlBasicParameterCondition actualCondition10 = SqlLinqCondition.Create <TestEntity>(actualCommand, c => c.Test2 == c.Test3) as SqlBasicParameterCondition; Assert.AreEqual(expectedCondition10, actualCondition10); }
public void CreateNotInConditionTest() { AbstractDatabase fakeDb = DatabaseFactory.CreateDatabase("", "System.Data.SqlClient") as AbstractDatabase; SelectCommand expectedCommand = fakeDb.CreateSelectCommand(""); SelectCommand actualCommand = fakeDb.CreateSelectCommand(""); SqlConditionBuilder expectedConditionBuilder = expectedCommand.ConditionBuilder; SqlConditionBuilder actualConditionBuilder = actualCommand.ConditionBuilder; SqlInsideParametersCondition expectedCondition = expectedConditionBuilder.NotInThese("TestColumn2", 1, 2, 3, 4, 5); SqlInsideParametersCondition actualCondition = actualConditionBuilder.NotInInt32("TestColumn2", "1, 2, 3, 4, 5", ','); Assert.AreEqual(expectedCondition, actualCondition); }
public void CreateNotConditionTest() { AbstractDatabase fakeDb = DatabaseFactory.CreateDatabase("", "System.Data.SqlClient") as AbstractDatabase; SelectCommand expectedCommand = fakeDb.CreateSelectCommand(""); SelectCommand actualCommand = fakeDb.CreateSelectCommand(""); SqlConditionBuilder expectedConditionBuilder = expectedCommand.ConditionBuilder; SqlConditionBuilder actualConditionBuilder = expectedCommand.ConditionBuilder; SqlBasicParameterCondition baseCondition = expectedConditionBuilder.Equal("TestColumn2", 1); SqlNotCondition expectedCondition = !baseCondition; SqlNotCondition actualCondition = SqlLinqCondition.Create <TestEntity>(actualCommand, c => !(c.Test2 == 1)) as SqlNotCondition; Assert.AreEqual(expectedCondition, actualCondition); }
public void LinqCreateConditionListTest() { AbstractDatabase fakeDb = DatabaseFactory.CreateDatabase("", "System.Data.SqlClient") as AbstractDatabase; SelectCommand expectedCommand = fakeDb.CreateSelectCommand(""); SelectCommand actualCommand = fakeDb.CreateSelectCommand(""); SqlConditionBuilder expectedConditionBuilder = expectedCommand.ConditionBuilder; AbstractSqlCondition expectedCondition = expectedConditionBuilder.GreaterThanOrEqual("TestColumn2", 123) & expectedConditionBuilder.LessThan("TestColumn2", 456); AbstractSqlCondition actualCondition = SqlLinqCondition.Create <TestEntity>(actualCommand, c => c.Test2 >= 123 && c.Test2 < 456) as SqlConditionList; Assert.AreEqual(expectedCondition, actualCondition); AbstractSqlCondition expectedCondition2 = expectedConditionBuilder.GreaterThanOrEqual("TestColumn2", 123) | (expectedConditionBuilder.GreaterThan("TestColumn4", DateTime.Now) & expectedConditionBuilder.LessThan("TestColumn7", DateTime.Now.AddDays(7))); AbstractSqlCondition actualCondition2 = SqlLinqCondition.Create <TestEntity>(actualCommand, c => c.Test2 >= 123 || (c.Test4 > DateTime.Now && c.Test7 < DateTime.Now.AddDays(7))) as SqlConditionList; Assert.AreEqual(expectedCondition2, actualCondition2); }
/// <summary> /// 设置指定的查询语句并返回当前语句 /// </summary> /// <param name="command">相关语句</param> /// <param name="cid">竞赛ID</param> /// <param name="pid">题目ID</param> /// <param name="userName">用户名</param> /// <param name="languageType">提交语言</param> /// <param name="resultType">提交结果</param> /// <returns>当前语句</returns> internal static SelectCommand Where(this SelectCommand command, Int32 cid, Int32 pid, String userName, LanguageType languageType, ResultType?resultType) { SqlConditionBuilder c = command.ConditionBuilder; AbstractSqlCondition condition = command.WhereCondition as AbstractSqlCondition; AbstractSqlCondition temp = null; //竞赛ID,非竞赛为-1 if (cid >= 0) { temp = c.Equal(SolutionRepository.CONTESTID, cid); condition = (condition == null ? temp : condition & temp); } //题目ID,如果为竞赛从竞赛题目顺序查找,否则从题目ID查找 if (pid >= 0) { temp = c.Equal((cid >= 0 ? SolutionRepository.CONTESTPROBLEMID : SolutionRepository.PROBLEMID), pid); condition = (condition == null ? temp : condition & temp); } //用户名 if (!String.IsNullOrEmpty(userName)) { temp = c.Equal(SolutionRepository.USERNAME, userName); condition = (condition == null ? temp : condition & temp); } //提交程序语言 if (!LanguageType.IsNull(languageType)) { temp = c.Equal(SolutionRepository.LANGUAGE, languageType.ID); condition = (condition == null ? temp : condition & temp); } //提交结果 if (resultType.HasValue) { temp = c.Equal(SolutionRepository.RESULT, (Byte)resultType.Value); condition = (condition == null ? temp : condition & temp); } return(command.Where(condition)); }
public void CreateNotConditionTest() { AbstractDatabase fakeDb = DatabaseFactory.CreateDatabase("", "System.Data.SqlClient") as AbstractDatabase; SelectCommand baseCommand = fakeDb.CreateSelectCommand(""); SqlConditionBuilder conditionBuilder = baseCommand.ConditionBuilder; SqlBasicParameterCondition baseCondition = conditionBuilder.Equal("TestColumn2", 1); SqlNotCondition actualCondition = !baseCondition; String expectedConditionClause = "(NOT((TestColumn2 = @PN_IDX_0)))"; String actualConditionClause = actualCondition.GetClauseText(); DataParameter[] expectedParameters = baseCondition.GetAllParameters(); DataParameter[] actualParameters = baseCondition.GetAllParameters(); Assert.AreEqual(expectedConditionClause, actualConditionClause); for (Int32 i = 0; i < expectedParameters.Length; i++) { Assert.AreEqual(expectedParameters[i], actualParameters[i]); } }
public void LinqCreateIsNullConditionTest() { AbstractDatabase fakeDb = DatabaseFactory.CreateDatabase("", "System.Data.SqlClient") as AbstractDatabase; SelectCommand expectedCommand = fakeDb.CreateSelectCommand(""); SelectCommand actualCommand = fakeDb.CreateSelectCommand(""); SqlConditionBuilder expectedConditionBuilder = expectedCommand.ConditionBuilder; SqlBasicParameterCondition expectedCondition = expectedConditionBuilder.IsNull("TestColumn1"); SqlBasicParameterCondition actualCondition = SqlLinqCondition.Create <TestEntity>(actualCommand, c => c.Test1.IsNull()) as SqlBasicParameterCondition; Assert.AreEqual(expectedCondition, actualCondition); SqlBasicParameterCondition expectedCondition2 = expectedConditionBuilder.IsNull("TestColumn2"); SqlBasicParameterCondition actualCondition2 = SqlLinqCondition.Create <TestEntity>(actualCommand, c => c.Test2.IsNull()) as SqlBasicParameterCondition; Assert.AreEqual(expectedCondition2, actualCondition2); SqlBasicParameterCondition expectedCondition3 = expectedConditionBuilder.IsNull("TestColumn5"); SqlBasicParameterCondition actualCondition3 = SqlLinqCondition.Create <TestEntity>(actualCommand, c => c.Test5.IsNull()) as SqlBasicParameterCondition; Assert.AreEqual(expectedCondition3, actualCondition3); }
/// <summary> /// 初始化新的有Where语句的Sql语句抽象类 /// </summary> /// <param name="database">数据库</param> /// <param name="rootSource">创建时的根来源</param> /// <param name="tableName">表格名称</param> protected AbstractSqlCommandWithWhere(AbstractDatabase database, AbstractSqlCommand rootSource, String tableName) : base(database, rootSource, tableName) { this._conditionBuilder = new SqlConditionBuilder(this); }
/// <summary> /// 设置指定的查询语句并返回当前语句 /// </summary> /// <param name="command">选择语句</param> /// <param name="ftids">主题ID列表</param> /// <param name="userName">发帖人</param> /// <param name="title">主题标题</param> /// <param name="type">主题类型</param> /// <param name="relativeID">相关ID</param> /// <param name="isLocked">是否锁定</param> /// <param name="isHide">是否隐藏</param> /// <param name="startDate">发帖开始时间</param> /// <param name="endDate">发帖结束时间</param> /// <returns>当前语句</returns> internal static SelectCommand Where(this SelectCommand command, String ftids, String userName, String title, ForumTopicType?type, Int32 relativeID, Boolean?isLocked, Boolean?isHide, DateTime?startDate, DateTime?endDate) { SqlConditionBuilder c = command.ConditionBuilder; AbstractSqlCondition condition = command.WhereCondition as AbstractSqlCondition; AbstractSqlCondition temp = null; //主题ID if (!String.IsNullOrEmpty(ftids)) { temp = c.InInt32(ForumTopicRepository.TOPICID, ftids, ','); condition = (condition == null ? temp : condition & temp); } //用户名 if (!String.IsNullOrEmpty(userName)) { temp = c.LikeAll(ForumTopicRepository.USERNAME, userName); condition = (condition == null ? temp : condition & temp); } //主题标题 if (!String.IsNullOrEmpty(title)) { temp = c.LikeAll(ForumTopicRepository.TITLE, title); condition = (condition == null ? temp : condition & temp); } //主题类型 if (type.HasValue) { temp = c.Equal(ForumTopicRepository.TYPE, (Byte)type.Value); condition = (condition == null ? temp : condition & temp); } //相关ID if (relativeID >= 0) { temp = c.Equal(ForumTopicRepository.RELATIVEID, relativeID); condition = (condition == null ? temp : condition & temp); } //是否锁定 if (isLocked.HasValue) { temp = c.Equal(ForumTopicRepository.ISLOCKED, isLocked.Value); condition = (condition == null ? temp : condition & temp); } //是否隐藏 if (isHide.HasValue) { temp = c.Equal(ForumTopicRepository.ISHIDE, isHide.Value); condition = (condition == null ? temp : condition & temp); } //发布日期范围 if (startDate.HasValue || endDate.HasValue) { temp = c.BetweenNullable <DateTime>(ForumTopicRepository.LASTDATE, startDate, endDate); condition = (condition == null ? temp : condition & temp); } return(command.Where(condition)); }
/// <summary> /// 设置指定的查询语句并返回当前语句 /// </summary> /// <param name="command">选择语句</param> /// <param name="fpids">帖子ID列表</param> /// <param name="ftids">主题ID列表</param> /// <param name="userName">发帖用户名</param> /// <param name="title">帖子标题</param> /// <param name="content">帖子内容</param> /// <param name="isHide">是否隐藏</param> /// <param name="startDate">发帖开始时间</param> /// <param name="endDate">发帖结束时间</param> /// <param name="postip">发帖IP</param> /// <returns>当前语句</returns> internal static SelectCommand Where(this SelectCommand command, String fpids, String ftids, String userName, String title, String content, Boolean?isHide, DateTime?startDate, DateTime?endDate, String postip) { SqlConditionBuilder c = command.ConditionBuilder; AbstractSqlCondition condition = command.WhereCondition as AbstractSqlCondition; AbstractSqlCondition temp = null; //帖子ID if (!String.IsNullOrEmpty(fpids)) { temp = c.InInt32(ForumPostRepository.POSTID, fpids, ','); condition = (condition == null ? temp : condition & temp); } //主题ID if (!String.IsNullOrEmpty(ftids)) { temp = c.InInt32(ForumPostRepository.TOPICID, ftids, ','); condition = (condition == null ? temp : condition & temp); } //用户名 if (!String.IsNullOrEmpty(userName)) { temp = c.LikeAll(ForumPostRepository.USERNAME, userName); condition = (condition == null ? temp : condition & temp); } //帖子标题 if (!String.IsNullOrEmpty(title)) { temp = c.LikeAll(ForumPostRepository.TITLE, title); condition = (condition == null ? temp : condition & temp); } //帖子内容 if (!String.IsNullOrEmpty(content)) { temp = c.LikeAll(ForumPostRepository.CONTENT, content); condition = (condition == null ? temp : condition & temp); } //是否隐藏 if (isHide.HasValue) { temp = c.Equal(ForumPostRepository.ISHIDE, isHide.Value); condition = (condition == null ? temp : condition & temp); } //发布日期范围 if (startDate.HasValue || endDate.HasValue) { temp = c.BetweenNullable <DateTime>(ForumPostRepository.POSTDATE, startDate, endDate); condition = (condition == null ? temp : condition & temp); } //发布IP if (!String.IsNullOrEmpty(postip)) { temp = c.LikeAll(ForumPostRepository.POSTIP, postip); condition = (condition == null ? temp : condition & temp); } return(command.Where(condition)); }
/// <summary> /// 设置指定的查询语句并返回当前语句 /// </summary> /// <param name="command">选择语句</param> /// <param name="names">用户名包含</param> /// <param name="nickname">昵称包含</param> /// <param name="email">邮箱包含</param> /// <param name="school">学校包含</param> /// <param name="lastIP">最后登录IP</param> /// <param name="islocked">是否锁定</param> /// <param name="regStartDate">注册日期开始</param> /// <param name="regEndDate">注册日期结束</param> /// <param name="loginStartDate">最后登录日期开始</param> /// <param name="loginEndDate">最后登录日期结束</param> /// <returns>当前语句</returns> internal static SelectCommand Where(this SelectCommand command, String names, String nickname, String email, String school, String lastIP, Boolean?islocked, DateTime?regStartDate, DateTime?regEndDate, DateTime?loginStartDate, DateTime?loginEndDate) { SqlConditionBuilder c = command.ConditionBuilder; AbstractSqlCondition condition = command.WhereCondition as AbstractSqlCondition; AbstractSqlCondition temp = null; //用户名列表模糊 if (!String.IsNullOrEmpty(names)) { String[] arrnames = names.Split(','); AbstractSqlCondition innertemp = null; temp = null; for (Int32 i = 0; i < arrnames.Length; i++) { if (!String.IsNullOrEmpty(arrnames[i])) { innertemp = c.LikeAll(UserRepository.USERNAME, arrnames[i]); temp = (temp == null ? innertemp : innertemp | temp); } } condition = (condition == null ? temp : condition & temp); } //昵称模糊 if (!String.IsNullOrEmpty(nickname)) { temp = c.LikeAll(UserRepository.NICKNAME, nickname); condition = (condition == null ? temp : condition & temp); } //邮箱模糊 if (!String.IsNullOrEmpty(email)) { temp = c.LikeAll(UserRepository.EMAIL, email); condition = (condition == null ? temp : condition & temp); } //学校模糊 if (!String.IsNullOrEmpty(school)) { temp = c.LikeAll(UserRepository.SCHOOL, school); condition = (condition == null ? temp : condition & temp); } //最后登录IP模糊 if (!String.IsNullOrEmpty(lastIP)) { temp = c.LikeAll(UserRepository.LASTIP, lastIP); condition = (condition == null ? temp : condition & temp); } //是否锁定 if (islocked.HasValue) { temp = c.Equal(UserRepository.ISLOCKED, islocked.Value); condition = (condition == null ? temp : condition & temp); } //注册日期范围 if (regStartDate.HasValue || regEndDate.HasValue) { temp = c.BetweenNullable <DateTime>(UserRepository.CREATEDATE, regStartDate, regEndDate); condition = (condition == null ? temp : condition & temp); } //登陆日期范围 if (loginStartDate.HasValue || loginEndDate.HasValue) { temp = c.BetweenNullable <DateTime>(UserRepository.LASTDATE, loginStartDate, loginEndDate); condition = (condition == null ? temp : condition & temp); } return(command.Where(condition)); }