首页 > 解决方案 > 如何在 Razor View 中获取统计信息

问题描述

我想在 Razor 中显示每个国家的学生人数和每个班级的学生人数,我为(学生、班级、国家)创建了 3 个不同的班级,如下所示:-

Student.cs

 public class Students
    {
        [Key]
        public int StudentID { get; set; }
        public string StudentName { get; set; }
        public DateTime StudentDob { get; set; } 
        [ForeignKey("ClassID")]
        public Classes classes { get; set; }
        [ForeignKey("CountryID")]
        public Countries countries { get; set; }
        
        
    }
Countries.cs
 public class Countries
    {
        [Key]
        public int CountryID { get; set; }
        public string CountryName { get; set; }
        public List<Students> Students { get; set; }
    }
Classes.cs
public class Classes
    {
        [Key]
        public int ClassID { get; set; }
        public string ClassName { get; set; }
        public List<Students> Students { get; set; }
    }

我还创建了另外 2 个模型来存储计数。

public class CountryViewModel
    {
        public string Countries { get; set; }
        public int count { get; set; }


    }

    public class ClassViewModel
    {
        public string Classes { get; set; }
        public int count { get; set; }


    }

之后我创建了服务

  public List<CountryViewModel> ShowCountryStats()
        {
            return _appDbContext.Students.Include("countries")
     .GroupBy(e => e.countries.CountryName)
     .Select(y => new CountryViewModel
     {
         Countries = y.Key,
         count = y.Count()
     }).ToList();
            
        }
        public List<ClassViewModel> ShowClassStats()
        {
            return _appDbContext.Students.Include("classes")
     .GroupBy(e => e.classes.ClassName)
     .Select(y => new ClassViewModel
     {
         Classes = y.Key,
         count = y.Count()
     }).ToList();

        }

我在 studentinfo.razor 中调用它们

 private CountryViewModel countryviewModel = new();
    private List<CountryViewModel> CountryViewModel = new();

    private ClassViewModel myClassmodel = new();
    private List<ClassViewModel> myClassModel = new();

    private Classes classe = new(); 
    private List<Classes> classes = new();

    private Countries country = new(); 
    private List<Countries> countries = new();


 private List<CountryViewModel> GetCountriess()
    {
        CountryViewModel = _studentService.ShowCountryStats();
        return CountryViewModel;
    }
    private List<ClassClassModel> ShowCountryStat()
    {
        myClassModel = _studentService.ShowClassStats();
        return myClassModel;

    }

现在我想显示结果如下,但我不知道如何在 .razor

Country         count
US              6
UK              8


Class          count 
A               5
B               15

标签: c#razormudblazor

解决方案


推荐阅读