/// <summary> /// 多表查询 /// </summary> /// <returns></returns> private Task <int> Test2() { //两张表 var uQueryUser = DB.CreateQuery <EntityModel.User>(); var uQueryRelate = DB.CreateQuery <EntityModel.Relate>(); #region 查询全部 var allQuery = from b in uQueryUser join c in uQueryRelate on b.Relate_ID equals c.ID select new EntityModel.User { ID = b.ID, Name = b.Name, Relate_ID = b.ID, RelateName = c.Name }; var p1 = allQuery.ToList(); #endregion #region 条件查询 var p2 = allQuery.Where(b => b.ID > 1).ToList <EntityModel.User>(); #endregion #region 条件分页查询 QueryArgs queryAga = new QueryArgs(); var wlist = new List <WhereField>(); WhereField wf = new WhereField() { WhereType = WhereType.Like, Field = "test_name", Value = "用户" }; wlist.Add(wf); queryAga.WhereFields = wlist; var result = DB.CreateComQuery().Query <User>(allQuery, queryAga);//.toResult(); #endregion #region json 分页查询 QuerySearchModel qsModel = new QuerySearchModel(); string str = JsonHelper.Serialize(wlist); qsModel.Filters = str; var args = qsModel.toQuery(); var result1 = DB.CreateComQuery().Query <User>(allQuery, args); #endregion return(Task.FromResult(1)); }
public object Search(string keyword, int page, int rows) { QuerySearchModel query = new QuerySearchModel(); query.queryExp = keyword; query.restype = 0; query.isSearch = true; query.page = page; query.rows = rows; return(SearchExtend(query)); }
/// <summary> /// 单表查询 /// </summary> /// <param name="userName"></param> /// <returns></returns> private Task <int> Test1() { var uQuery = DB.CreateQuery <EntityModel.User>(); #region 查询全部 var allList = uQuery.ToList(); #endregion #region 条件查询 var p = uQuery.Where(b => b.ID > 0 && b.Name.Contains("用户")).ToList <EntityModel.User>(); #endregion #region 条件分页查询 QueryArgs queryAga = new QueryArgs(); var wlist = new List <WhereField>(); WhereField wf = new WhereField() { WhereType = WhereType.Like, Field = "test_name", Value = "用户" }; wlist.Add(wf); queryAga.WhereFields = wlist; var result = DB.CreateComQuery().Query <User>(uQuery, queryAga);//.toResult(); #endregion #region json 分页查询 QuerySearchModel qsModel = new QuerySearchModel(); string str = JsonHelper.Serialize(wlist); qsModel.Filters = str; var args = qsModel.toQuery(); var result1 = DB.CreateComQuery().Query <User>(uQuery, args); #endregion return(Task.FromResult(1)); }
private string FormatArguments(Dictionary <string, object> args) { string argstring = ""; if (args == null) { return(""); } foreach (var item in args) { if (item.Value is QuerySearchModel) { QuerySearchModel model = (QuerySearchModel)item.Value; argstring += string.Format("{0}@{1}@{2}@{3}@{4}", model.queryExp, model.restype, model.rows, model.sortExp, model.groupName); } else { argstring += string.Format("{0}----{1}&", item.Key, item.Value == null ? "" : item.Value.ToString()); } } return(argstring); }
// GET: Search public async Task <ActionResult> Index([Bind(Include = "q")] QuerySearchModel query) { if (!string.IsNullOrEmpty(User.Identity.Name)) { if (_telegramService.IsIdentityRequired()) { var user = await UserManager.FindByNameAsync(User.Identity.Name); if (user != null) { try { TempData["AuthHash"] = await _telegramService.AuthAsync(user.PhoneNumber); return(RedirectToAction("CodeConfirm")); } catch { } } } } return(View("Index", query)); }
public object SearchExtend(QuerySearchModel query) { if (query == null) { return new { Rcode = -1, Rmsg = "错误请求" } } ; string errmsg = null; TimeSpan usetime = new TimeSpan(); SearchResult result = SearchBLL.SearchQuery(query, ref usetime, ref errmsg); if (!string.IsNullOrEmpty(errmsg) || result == null) { return new { Rcode = -1, Rmsg = errmsg } } ; else if (result.TotalCount == 0) { return new { Rcode = 0, total = 0, Rmsg = "没有符合条件的数据" } } ; else { if (string.IsNullOrEmpty(query.groupName)) { DataTable rdt = new DataTable(); // int pagecount = result.ResultCount % query.rows == 0 ? result.ResultCount / query.rows : result.ResultCount / query.rows + 1; if (result.Attrs != null && result.Attrs.Length > 0) { rdt.Columns.Add(new DataColumn("seqid")); foreach (AttrMatch am in result.Attrs) { rdt.Columns.Add(new DataColumn(am.AttrName)); } } DataRow dr; foreach (ResultMatches match in result.Matches) { dr = rdt.NewRow(); dr["seqid"] = match.DocumentID; foreach (DataColumn dc in rdt.Columns) { if (dc.ColumnName != "seqid") { dr[dc.ColumnName] = match.GetAttrValue(dc.ColumnName); } } rdt.Rows.Add(dr); } return(new { Rcode = 1, list = rdt, total = result.TotalCount, PageCount = result.TotalCount, usetime = usetime.TotalMilliseconds }); } else { int classparentid = 12; string _errmsg; List <Options> optionlist = null; switch (query.groupName.Trim()) { case "restype": SearchBLL.GetResTypeOptions(out _errmsg); optionlist = SearchBLL.restypeList; break; case "classid": SearchBLL.GetClassOptions(classparentid, out _errmsg); optionlist = SearchBLL.classList[classparentid]; break; case "languageid": SearchBLL.GetDicOptions(out _errmsg); optionlist = SearchBLL.dictList["language"]; break; case "authorstr": SearchBLL.GetAuthorOptions(out _errmsg); optionlist = SearchBLL.authorsList; break; } List <SearchGroupModel> grouplist = new List <SearchGroupModel>(); SearchGroupModel group; foreach (ResultMatches match in result.Matches) { group = new SearchGroupModel(); group.groupvalue = match.GetAttrValue("@groupby").ToString().Trim(); group.groupcount = int.Parse(match.GetAttrValue("@count").ToString()); Options option = optionlist != null?optionlist.Find(o => o.id == group.groupvalue) : null; if (option != null) { group.groupname = option.text; } else { group.groupname = group.groupvalue; } grouplist.Add(group); } if (query.groupName.Trim().Equals("classid")) { grouplist = SearchBLL.GetClassGroupTree(classparentid, grouplist); } return(new { Rcode = 1, list = grouplist, total = result.TotalCount, PageCount = result.TotalCount, usetime = usetime.TotalMilliseconds }); } } }
/// <summary> /// 获取检索结果 /// </summary> /// <param name="query">检索对象</param> /// <param name="usetime">检索用时</param> /// <param name="errmsg">错误信息</param> /// <returns>检索结果</returns> public static SearchResult SearchQuery(QuerySearchModel query, ref TimeSpan usetime, ref string errmsg) { ISeeClient ISee = new ISeeClient(); ISeeIndexServer ISeeServerInfo = GetISeeServer(query.restype); if (ISeeServerInfo == null) { errmsg = "未获取到对应索引:" + query.restype; return(null); } ISee.Ip = ISeeServerInfo.IP; ISee.Port = ISeeServerInfo.Port; ISee.AutoFilterTag = false;// ISeeServerInfo.AutoFilterTag; ISee.MaxMatchCount = ISeeServerInfo.MaxMatchCount; ISee.SearchMode = SearchMode.MatchExtended2; if (query.rows <= 0) { query.rows = ISeeServerInfo.MaxMatchCount; } SearchOptions option = new SearchOptions(); option.Limit = query.rows; option.Offset = (query.page - 1) * query.rows; option.Offset = option.Offset + ISee.Limit > ISeeServerInfo.MaxMatchCount ? (ISeeServerInfo.MaxMatchCount - ISee.Limit) : option.Offset; option.Index = ISeeServerInfo.Index; FilterAttrs(query.queryExp, query.restype, ref option, out errmsg); if (!string.IsNullOrEmpty(errmsg)) { return(null); } // 分组字段 if (!string.IsNullOrEmpty(query.groupName)) { option.GroupAttrName = query.groupName; option.ResultAttrs = query.groupName; // 分组排序 GroupSort groupSort = GroupSort.CountDesc; if (!string.IsNullOrEmpty(query.sortExp) && Enum.TryParse <GroupSort>(query.sortExp, out groupSort)) { option.GroupSort = groupSort; } else { option.GroupSort = GroupSort.CountDesc; // 默认 } } else { // 排序 if (!string.IsNullOrEmpty(query.sortExp)) { option.SortExp = query.sortExp; } //查询词计数 //if (!string.IsNullOrEmpty(option.KeyExp)) //{ // if (query.isSearch) // { // string _errmsg; // Regex regex = new Regex("[\u4e00-\u9fa5]+"); // Dictionary<string, int> keylist = new Dictionary<string, int>(); // foreach (Match match in regex.Matches(option.KeyExp)) // { // if (match.Success && match.Groups.Count > 0 && !keylist.ContainsKey(match.Groups[0].Value)) // keylist.Add(match.Groups[0].Value, 0); // } // if (keylist.Count > 0) // { // string[] keyarr = new string[keylist.Count]; // int i = 0; // foreach (string key in keylist.Keys) // { // keyarr[i] = key; // i++; // } // DAL.SearchDAL.UpdateHotKeyData(keyarr, out _errmsg); // } // } //} } // 查询结果 SearchResult results = ISee.Query(option); if (!string.IsNullOrEmpty(ISee.ErrMsg)) { errmsg = ISee.ErrMsg; return(null); } if (!string.IsNullOrEmpty(results.Warnmsg)) { } usetime = ISee.FoundTime; return(results); }