private static void SearchGroupChidren(SearchGroupModel sgroupmodel, List <Options> grouplist, List <SearchGroupModel> sgroup) { List <Options> optionlist = grouplist.FindAll(o => o.tag.ToString() == sgroupmodel.groupvalue.ToString()); if (optionlist != null) { SearchGroupModel tsgm; foreach (Options option in optionlist) { tsgm = sgroup.Find(o => o.groupvalue == option.id); if (tsgm != null) { sgroupmodel.groupcount += tsgm.groupcount; sgroupmodel.grouptags += tsgm.groupvalue + ","; sgroupmodel.children.Add(tsgm); tsgm.children = new List <SearchGroupModel>(); SearchGroupChidren(tsgm, grouplist, sgroup); if (string.IsNullOrEmpty(tsgm.grouptags)) { tsgm.grouptags = tsgm.groupvalue; } else { tsgm.grouptags = tsgm.grouptags.Trim(','); } } } } }
public static List <SearchGroupModel> GetClassGroupTree(int parentid, List <SearchGroupModel> sgrouplist) { List <SearchGroupModel> grouptree = new List <SearchGroupModel>(); List <Options> optiononelist = classList[parentid].FindAll(o => o.tag.ToString() == parentid.ToString()); SearchGroupModel tsgm; if (optiononelist != null) { foreach (Options option in optiononelist) { tsgm = sgrouplist.Find(o => o.groupvalue == option.id); if (tsgm == null) { tsgm = new SearchGroupModel() { groupvalue = option.id, groupname = option.text, groupcount = 0, }; } tsgm.children = new List <SearchGroupModel>(); grouptree.Add(tsgm); SearchGroupChidren(tsgm, classList[parentid], sgrouplist); if (string.IsNullOrEmpty(tsgm.grouptags)) { tsgm.grouptags = tsgm.groupvalue; } else { tsgm.grouptags = tsgm.grouptags.Trim(','); } } } return(grouptree); }
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 }); } } }