【问题标题】:Displaying the results from a SQL Select Statment显示 SQL Select 语句的结果
【发布时间】:2025-11-26 23:45:02
【问题描述】:

正确的问题我已经尝试排序好多年了!

我正在尝试显示 SQL 选择命令的结果并将此信息显示到我的视图中。我不能简单地使用 EntityFramework 来执行命令,因为我从 2 个不同的表中引入数据并显示为一个,这是为了报告。

这是我需要运行的 sql 命令。

select FirstName, LastName,
(select count(*) from Orders o where U.userID = o.CreatedByUserID and ProductID = 1) as ProductCount
from Users U
order by UserID

我可以做些什么来运行这个命令吗?如果我不能直接运行 SQL,我愿意尝试 EntityFramwork 方法。

提前感谢您的帮助!

【问题讨论】:

  • 有什么尝试但失败了?
  • “是”不是对“什么”的回答。
  • 抱歉错过阅读! - 我一直在尝试这个,但它对我没有用。 'ExecuteSelect' 方法由于某种原因无法运行codeproject.com/Tips/374195/…
  • 你试过简单的SqlCommand.ExecuteDataReader吗?
  • 是的,但我现在的主要问题是在视图上显示该数据

标签: c# .net sql entity-framework-4


【解决方案1】:

可以使用 EF(或其他 ORM 解决方案)。订单和用户之间显然存在关系:U.userID = o.CreatedByUserID。您可以只检索用户,然后访问user.Orders.Count 以获取“缺失”值。

【讨论】:

    【解决方案2】:

    假设 ctx 是你的上下文尝试

    var q=from u in ctx.users
          join x in ctx.orders.Where(y=>y.ProductID==1).GroupBy(y => y.CreatedByUserID) 
          on u.UserID equals x.Key into joined_orders
    from o in joined_orders.DefaultIfEmpty()
    select new {
            FirstName=u.FirstName, 
            LastName=u.LastName, 
            Count=o.Count()
          };
    

    这假设您没有在模型中定义任何关系,否则您可以使用

    var q=from u in ctx.users
          select new { 
            FirstName=u.FirstName,
            LastName=u.LastName,
            Count=o.Count(x=>x.ProductID==1)
           };
    

    【讨论】: