将分组查询的结果传递给强类型视图并显示

本文关键字:强类型 视图 显示 查询 结果 | 更新日期: 2023-09-27 18:10:38

如何将此查询的IEnumerable结果传递给强类型视图以显示?

var a = _db.Test
           .GroupBy(g => g.userId)
           .Select(s => new { userid = s.Key,  total = s.Count()});

典型的结果是:

userid = John
total = 2
userid = Joe
total = 5

欢迎指教

将分组查询的结果传递给强类型视图并显示

你可以创建一个自定义类,它将是一个视图模型,并返回该视图模型类型的List,而不是返回匿名类型:

public class MyVM
{
  public string UserID {get;set;}
  public int Total {get;set;}
}

然后:

var a = _db.Test
           .GroupBy(g => g.userId)
           .Select(s => new MyVM{ UserID = s.Key,  Total = s.Count()}).ToList();

和in view:

@model List<MyVM>

您只需要声明一个与查询结果兼容的具体类型,并传递一个物化的IEnumerable<T>(即T[], List<T>, ReadOnlyCollection<T>),其中T是新声明的类型。

public class TestResult
{
    // Can't be 100% certain about the userId type
    // based on your code sample - adjust as necessary.
    public int userid { get; set; }
    public int total { get; set; }
}
var a = _db.Test
       .GroupBy(g => g.userId)
       .Select(s => new TestResult { userid = s.Key,  total = s.Count()});