【问题标题】:ASP.net.MVC 5 create a page which will display sql queryASP.net.MVC 5 创建一个显示 sql 查询的页面
【发布时间】:2018-07-03 08:08:16
【问题描述】:

我想了解如何向我的控制器添加一些 SQL 查询,但我不知道如何正确执行。

我的控制器是

public ActionResult Index()
{
   return View(db.Student.ToList());
}

默认页面是给我下一个数据。

   ID,  NAME,  STATUS
    1   Bella,  5
    2   Bella,  5
    3   Bella,  7

我想将下一个 SQL 查询添加到控制器,它会为我提供我希望它在页面上显示的数据。

(select distinct id,name,max(status) from students group by id,name)



ID,  NAME,  STATUS

    3   Bella,  7

【问题讨论】:

  • 我不确定我是否理解正确,您要过滤您的数据吗?
  • 我第一个例子是 3 行,我只想要一个最大(状态)的行。所以我的页面只会向用户显示一行

标签: c# sql asp.net asp.net-mvc-5


【解决方案1】:

我建议您使用带有 group-by 子句的 linq,如下所示;

var students = from s in db.Student
               group s by s.name into groupedResult
               select new 
               {
                  Name = groupedResult.Key,
                  Max_Status = groupedResult.Max(g => g.Status)
               } ;

【讨论】:

  • 我做了下一个 var students = from s in db.Univet group s by s.Name into groupedResult select new { Name = groupedResult.Key, Max_Status = groupedResult.Max(g => g.Status) };返回视图();
  • 是的,谢谢,但我需要添加“Dinstinct”以避免重复插入表中的值
  • 像我的 sql 查询一样
  • 我使用的返回是否正确? " return View(db.Univet.ToList()); "
  • 很高兴为您提供帮助。您不需要 DISTINCT,因为 group-by 通过确保行不重复来处理这一点
【解决方案2】:

如果您想通过Name 对数据进行分组并使用linq 显示Status 的最大值,那么您可以执行以下操作。

var students = db.Student.GroupBy(i => i.Name)
                      .Select(g => new Student()
                        {
                            Name = g.Key,
                            Status = g.Max(row => row.Status),
                            Id = g.Max(row => row.Id)
                        }).ToList();
return View(students);

【讨论】:

  • Name = g.Key - 这是什么意思?
  • Name = g.Key 这将为您提供执行 GroupBy 的 Name 属性的值。
  • 在代码中添加了Id。希望这可以解决您的问题。
  • 无法在 LINQ to Entities 查询中构造实体或复杂类型“Tessa.Models.Univet”。说明:执行当前 Web 请求期间发生未处理的异常。请查看堆栈跟踪以获取有关错误及其源自代码的位置的更多信息。异常详细信息:System.NotSupportedException:无法在 LINQ to Entities 查询中构造实体或复杂类型“Tessa.Models.Univet”。
猜你喜欢
  • 1970-01-01
  • 2016-12-04
  • 1970-01-01
  • 2016-08-04
  • 1970-01-01
  • 1970-01-01
  • 2020-12-13
  • 2014-06-04
相关资源
最近更新 更多