0

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

我正在尝试显示 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 方法。

提前感谢您的帮助!

4

2 回答 2

1

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

于 2012-07-31T11:41:30.703 回答
0

假设 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)
       };
于 2012-07-31T12:50:58.547 回答