public void LinqCreateLikeConditionTest() { AbstractDatabase fakeDb = DatabaseFactory.CreateDatabase("", "System.Data.SqlClient") as AbstractDatabase; SelectCommand expectedCommand = fakeDb.CreateSelectCommand(""); SelectCommand actualCommand = fakeDb.CreateSelectCommand(""); SqlConditionBuilder expectedConditionBuilder = expectedCommand.ConditionBuilder; SqlBasicParameterCondition expectedCondition = expectedConditionBuilder.Like("TestColumn1", "test1"); SqlBasicParameterCondition actualCondition = SqlLinqCondition.Create <TestEntity>(actualCommand, c => c.Test1.Like("test1")) as SqlBasicParameterCondition; Assert.AreEqual(expectedCondition, actualCondition); SqlBasicParameterCondition expectedCondition2 = expectedConditionBuilder.LikeAll("TestColumn1", "test2"); SqlBasicParameterCondition actualCondition2 = SqlLinqCondition.Create <TestEntity>(actualCommand, c => c.Test1.LikeAll("test2")) as SqlBasicParameterCondition; Assert.AreEqual(expectedCondition2, actualCondition2); SqlBasicParameterCondition expectedCondition3 = expectedConditionBuilder.LikeStartWith("TestColumn1", "test3"); SqlBasicParameterCondition actualCondition3 = SqlLinqCondition.Create <TestEntity>(actualCommand, c => c.Test1.LikeStartWith("test3")) as SqlBasicParameterCondition; Assert.AreEqual(expectedCondition3, actualCondition3); SqlBasicParameterCondition expectedCondition4 = expectedConditionBuilder.LikeEndWith("TestColumn1", "test4"); SqlBasicParameterCondition actualCondition4 = SqlLinqCondition.Create <TestEntity>(actualCommand, c => c.Test1.LikeEndWith("test4")) as SqlBasicParameterCondition; Assert.AreEqual(expectedCondition4, actualCondition4); }
/// <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)); }
/// <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)); }