Пример #1
0
        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"));
            }
        }
Пример #2
0
        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));
            }
        }
Пример #3
0
 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);
         }
     }
 }