如何在asp.net的新闻中获取类别计数使用

Posted

技术标签:

【中文标题】如何在asp.net的新闻中获取类别计数使用【英文标题】:How to get Category Count Use at News in asp.net 【发布时间】:2021-10-03 21:35:43 【问题描述】:

大家好,我在获取新闻中使用的类别计数时遇到问题

例如我想知道“国际”类别在新闻中有多少使用

这是我的新闻实体:

 public class News
    
        public int NewsId  get; set; 
       
        public int? SubGroup  get; set; 

        public string NewsTitle  get; set; 
        public string NewsBody  get; set; 
        public DateTime CreatedDate  get; set; 
        public string Poster  get; set; 
       
        public DateTime? UpdateTime  get; set; 
        public bool  isChoseClerck get; set; 

        public News()
        
            this.CreatedDate = DateTime.Now;
        

        //RelationShip
        public List<Category>  Category  get; set; 
        public User User  get; set; 
        public List<Tag> Tags  get; set; 
        public string Source get; set; 
    

这是我想向用户展示的 Dto:


 public class SubCategoryWithCountDTO
    
        public int CategoryId  get; set; 
        public string CateGoryName  get; set; 
        public int UseCount  get; set; 
    

我在下面写了服务但我不知道我不能在“包含”中使用 lambda

 public async Task<List<SubCategoryWithCountDTO>> SubCategoryWithCount(int skip, int take)
        
            var subCategoryList = await _context.Categories
                .Where(x => x.ParentId != null).OrderBy(x => x.CategoryId)
                .Skip(skip).Take(take).ToListAsync();
            var SubCategoryWithCount = new List<SubCategoryWithCountDTO>();
            foreach (var item in subCategoryList)
            
                var categoryUse = _context.News.Include(x => x.Category
                    .Select(x => x.CategoryId == item.CategoryId)).Count();
                var preSubCategory = new SubCategoryWithCountDTO
                
                    CategoryId = item.CategoryId,
                    CateGoryName = item.CateGoryName,
                    UseCount = categoryUse
                ;
                SubCategoryWithCount.Add(preSubCategory);
            

            return SubCategoryWithCount;
        

谁能告诉我正确的方法?,谢谢

【问题讨论】:

你能分享一个示例结果和你的对象列表吗? 【参考方案1】:

您可以通过这种方式实现您的目标:

public List<TagWithUseCountViewModel> GetTagWithCount()
    

        var list = new List<TagWithUseCountViewModel>();

        var query = from item in _context.News.SelectMany(x => x.Tags)
                    select item;

        foreach (var item in query)
        
            list.Add(new TagWithUseCountViewModel
            

                Id = item.Id,
                TagName = item.TagName,
                UseCount =
                query.Where(x => x.Id == item.Id).GroupBy(x => x.NewsList).Count()
            );
         

【讨论】:

以上是关于如何在asp.net的新闻中获取类别计数使用的主要内容,如果未能解决你的问题,请参考以下文章

从 IIS 获取我托管的 Asp.Net 网站的运行会话计数

如何在 Asp.net MVC C# 中使用 Linq 从多个表中选择具有最大计数值的记录

如何在 asp.net 核心中从返回零计数的主体正确映射数组

如何使用存储过程从 ASP.NET 记录计数?

在 ASP.NET Core WebAPI 中获取 OData 计数

ASP.NET MVC 如何通过 Id 从另一个模型中获取名称