コード例 #1
0
        // GET: Posts
        public async Task <IActionResult> Index()
        {
            IQueryable <string> categoryQuery = from m in _context.Categories
                                                orderby m.CategoryName
                                                select m.CategoryName;

            var posts = from m in _context.Posts
                        select m;
            var postms = new List <PostModel>();

            var postmv = new PostModelView();

            foreach (var post in posts)
            {
                var postmodel = new PostModel
                {
                    Author      = post.Author,
                    PostId      = post.PostId,
                    UserId      = post.UserId,
                    Text        = post.Text,
                    Title       = post.Title,
                    ReleaseDate = post.ReleaseDate
                };
                var category = await _context.Categories.SingleOrDefaultAsync(m => m.CategoryId == post.CategoryId);

                postmodel.CategoryName = category.CategoryName;
                //StringBuilder sb = new StringBuilder();
                var tags = await _context.PostTags.Where(m => m.PostId == postmodel.PostId).Select(pt => pt.Tag.TagName).ToArrayAsync();

                ////var tagS = await _context.Tags.ToListAsync();
                //for (int i = 0; i < tags.Count(); i++)
                //{
                //    var taG = tags[i];
                //    //var tAg = tagS.FirstOrDefault(t => t.TagId == taG.TagId);
                //    sb.Append(taG.TagName);
                //    if (i != tags.Count() - 1)
                //    {
                //        sb.Append(",");
                //    }
                //}
                postmodel.TagStr = String.Join(",", tags);//sb.ToString();

                postms.Add(postmodel);
            }

            postmv.CategoryNames = new SelectList(await categoryQuery.Distinct().ToListAsync());
            postmv.PostModels    = postms;

            return(View(postmv));
        }
コード例 #2
0
        public async Task <IActionResult> Index(string categoryName, string searchString)
        {
            IQueryable <string> categoryQuery = from m in _context.Categories
                                                orderby m.CategoryName
                                                select m.CategoryName;


            var tagsL = from m in _context.Tags
                        select m;
            //var post = new Post();
            var postms = new List <PostModel>();

            var postmv = new PostModelView();

            if (!String.IsNullOrEmpty(categoryName))
            {
                var category = await _context.Categories.Include(k => k.Posts).SingleOrDefaultAsync(m => m.CategoryName == categoryName);

                var posts = category.Posts;

                foreach (var post in posts)
                {
                    var postmodel = new PostModel
                    {
                        Author      = post.Author,
                        PostId      = post.PostId,
                        UserId      = post.UserId,
                        Text        = post.Text,
                        Title       = post.Title,
                        ReleaseDate = post.ReleaseDate
                    };
                    //var category = await _context.Categories.SingleOrDefaultAsync(m => m.CategoryId == post.CategoryId);
                    postmodel.CategoryName = category.CategoryName;
                    //StringBuilder sb = new StringBuilder();
                    var tags = await _context.PostTags.Where(m => m.PostId == postmodel.PostId).Select(pt => pt.Tag.TagName).ToArrayAsync();

                    ////var tagS = await _context.Tags.ToListAsync();
                    //for (int i = 0; i < tags.Count(); i++)
                    //{
                    //    var taG = tags[i];
                    //    //var tAg = tagS.FirstOrDefault(t => t.TagId == taG.TagId);
                    //    sb.Append(taG.TagName);
                    //    if (i != tags.Count() - 1)
                    //    {
                    //        sb.Append(",");
                    //    }
                    //}
                    postmodel.TagStr = String.Join(",", tags);//sb.ToString();
                    //postmodel.CategoryNames = new SelectList(await categoryQuery.Distinct().ToListAsync());
                    postms.Add(postmodel);
                }

                postmv.CategoryNames = new SelectList(await categoryQuery.Distinct().ToListAsync());
                postmv.PostModels    = postms;
            }

            if (!String.IsNullOrEmpty(searchString))
            {
                tagsL = tagsL.Where(s => s.TagName.Contains(searchString));
                //var tagsL = tags.ToList();

                foreach (var tag in tagsL)
                {
                    var tagd = await _context.PostTags.ToListAsync();

                    if (tagd != null)
                    {
                        foreach (var tago in tagd.Where(m => m.TagId == tag.TagId))
                        {
                            var post = await _context.Posts.SingleOrDefaultAsync(m => m.PostId == tago.PostId);


                            var postmodel = new PostModel
                            {
                                Author      = post.Author,
                                PostId      = post.PostId,
                                UserId      = post.UserId,
                                Text        = post.Text,
                                Title       = post.Title,
                                ReleaseDate = post.ReleaseDate
                            };
                            var category = await _context.Categories.SingleOrDefaultAsync(m => m.CategoryId == post.CategoryId);

                            postmodel.CategoryName = category.CategoryName;
                            //StringBuilder sb = new StringBuilder();
                            var tags = await _context.PostTags.Where(m => m.PostId == postmodel.PostId).Select(pt => pt.Tag.TagName).ToArrayAsync();

                            ////var tagS = await _context.Tags.ToListAsync();
                            //for (int i = 0; i < tags.Count(); i++)
                            //{
                            //    var taG = tags[i];
                            //    //var tAg = tagS.FirstOrDefault(t => t.TagId == taG.TagId);
                            //    sb.Append(taG.TagName);
                            //    if (i != tags.Count() - 1)
                            //    {
                            //        sb.Append(",");
                            //    }
                            //}
                            postmodel.TagStr = String.Join(",", tags);//sb.ToString();

                            //postmodel.CategoryNames = new SelectList(await categoryQuery.Distinct().ToListAsync());

                            postms.Add(postmodel);
                        }
                    }
                    else
                    {
                        break;
                    }
                }
                //var postmv = new PostModelView();
                postmv.CategoryNames = new SelectList(await categoryQuery.Distinct().ToListAsync());
                postmv.PostModels    = postms;
            }


            return(View(postmv));
        }