public IHttpActionResult PoetDetails(string name, Boolean type = false) { name = ChineseStringUtility.ToSimplified(name);// 查询作者不管简体还是繁体都转为简体查询 List <object> data = new List <object>(); try { var poet = db.Poet.AsNoTracking().Where(p => p.name == name).Select(p => new { p.poetId, p.name, p.image, p.dynasty, p.minIntroduce, p.introduce }).First(); if (type) { Dictionary <string, dynamic> result = new Dictionary <string, dynamic>(); string poetName = ChineseStringUtility.ToTraditional(poet.name); string dynasty = ChineseStringUtility.ToTraditional(poet.dynasty); string minIntroduce = ChineseStringUtility.ToTraditional(poet.minIntroduce); string introduce = ChineseStringUtility.ToTraditional(poet.introduce); result.Add("poetId", poet.poetId); result.Add("image", poet.image); result.Add("name", poetName); result.Add("dynasty", dynasty); result.Add("minIntroduce", minIntroduce); result.Add("introduce", introduce); return(Json(result)); } else { return(Json(poet)); } } catch { return(Json("NoPoet")); } }
public IHttpActionResult SearchPoetryFromTags(int page, string tags, string dynasty, string state, Boolean type) { if (dynasty == null) { dynasty = ""; } if (tags == null) { tags = ""; } if (state == null) { state = ""; } tags = ChineseStringUtility.ToSimplified(tags); dynasty = ChineseStringUtility.ToSimplified(dynasty); state = ChineseStringUtility.ToSimplified(state); List <dynamic> poetry = new List <dynamic>(); if (dynasty == "") { var tempResult = db.Poetry.Where(p => p.tags.Contains(tags) && p.tags.Contains(state)).OrderByDescending(p => p.star).Skip(10 * (page - 1)).Take(10).Select(p => new { p.poetryId, name = p.name + "\n" + p.dynasty + "·" + p.author, p.poetryContent, p.dynasty, p.author, onlyname = p.name }).ToList(); poetry.Add(tempResult); } else if (dynasty == "当代" || dynasty == "明末清初" || dynasty == "近现代" || dynasty == "民国末当代初") // 因为这几个没有star 所有每次随机取 { var tempResult = db.Poetry.Where(p => p.tags.Contains(tags) && p.tags.Contains(state) && p.dynasty == dynasty).OrderBy(p => Guid.NewGuid()).Skip(10 * (page - 1)).Take(10).Select(p => new { p.poetryId, name = p.name + "\n" + p.dynasty + "·" + p.author, p.poetryContent, p.dynasty, p.author, onlyname = p.name }).ToList(); poetry.Add(tempResult); } else { var tempResult = db.Poetry.Where(p => p.tags.Contains(tags) && p.tags.Contains(state) && p.dynasty == dynasty).OrderByDescending(p => p.star).Skip(10 * (page - 1)).Take(10).Select(p => new { p.poetryId, name = p.name + "\n" + p.dynasty + "·" + p.author, p.poetryContent, p.dynasty, p.author, onlyname = p.name }).ToList(); poetry.Add(tempResult); } //var tempResult = db.Poetry.Where(p => p.tags.Contains(tags) && p.tags.Contains(state) && p.dynasty == dynasty).OrderByDescending(p => p.star).Skip(10 * (page - 1)).Take(10).Select(p => new { p.poetryId, name = p.name + "\n" + p.dynasty + "·" + p.author, p.poetryContent, p.dynasty, p.author, onlyname = p.name }).ToList(); //List<dynamic> poetry = new List<dynamic>(tempResult); List <object> data = new List <object>(); if (type) { for (int i = 0; i < poetry[0].Count; i++) { Dictionary <string, dynamic> result = new Dictionary <string, dynamic>(); string name = ChineseStringUtility.ToTraditional(poetry[0][i].onlyname) + "\n" + ChineseStringUtility.ToTraditional(poetry[0][i].dynasty) + "·" + ChineseStringUtility.ToTraditional(poetry[0][i].author); string poetryContent = ChineseStringUtility.ToTraditional(poetry[0][i].poetryContent); result.Add("poetryId", poetry[0][i].poetryId); result.Add("name", name); result.Add("poetryContent", poetryContent); data.Add(result); } return(Json(data)); } else { return(Json(poetry)); } }
public IEnumerable <dynamic> SearchPoetry(string key, int page, Boolean type, Boolean bol) { if (bol) // bol 等于true 的时候根据诗人查古诗 { if (key != null) { key = ChineseStringUtility.ToSimplified(key); } var tempPoetry = db.Poetry.AsNoTracking().Where(p => p.author == key).OrderByDescending(p => p.star).Skip(10 * (page - 1)).Take(20).Select(p => new { p.poetryId, name = p.name + "\n" + p.dynasty + "·" + p.author, p.poetryContent, p.dynasty, p.author, onlyname = p.name }).ToList(); List <dynamic> poetry = new List <dynamic>(tempPoetry); List <object> data = new List <object>(); if (type) { for (int i = 0; i < poetry.Count(); i++) { Dictionary <string, dynamic> result = new Dictionary <string, dynamic>(); string name = ChineseStringUtility.ToTraditional(poetry[i].onlyname) + "\n" + ChineseStringUtility.ToTraditional(poetry[i].dynasty) + "·" + ChineseStringUtility.ToTraditional(poetry[i].author); string poetryContent = ChineseStringUtility.ToTraditional(poetry[i].poetryContent); result.Add("poetryId", poetry[i].poetryId); result.Add("name", name); result.Add("poetryContent", poetryContent); data.Add(result); } return(data); } else { return(poetry); } } else // bol 等于false 的时候根据诗人,诗名,诗词查古诗 { //先根据关键词查诗名 key = ChineseStringUtility.ToSimplified(key); var tempPoetry = db.Poetry.AsNoTracking().Where(p => p.name.Contains(key) || p.author.Contains(key) || p.poetryContent.Contains(key)).OrderByDescending(p => p.star).Skip(10 * (page - 1)).Take(10).Select(p => new { p.poetryId, name = p.name + "\n" + p.dynasty + "·" + p.author, p.poetryContent, p.star, p.dynasty, p.author, onlyname = p.name }).ToList(); if (type) { List <object> list = new List <object>(); for (int i = 0; i < tempPoetry.Count(); i++) { Dictionary <string, dynamic> result = new Dictionary <string, dynamic>(); string name = ChineseStringUtility.ToTraditional(tempPoetry[i].onlyname) + "\n" + ChineseStringUtility.ToTraditional(tempPoetry[i].dynasty) + '·' + ChineseStringUtility.ToTraditional(tempPoetry[i].author); string poetryContent = ChineseStringUtility.ToTraditional(tempPoetry[i].poetryContent); result.Add("name", name); result.Add("poetryContent", poetryContent); result.Add("poetryId", tempPoetry[i].poetryId); list.Add(result); } return(list); } else { return(tempPoetry); } } }