0

正しい問題私は今何年もの間分類しようとしてきました!

SQL selectコマンドの結果を表示し、この情報をビューに表示しようとしています。2つの異なるテーブルからデータを取り込み、1つとして表示しているため、とにかく表示されているものからではなく、EntityFrameworkを使用してコマンドを実行することはできません。これはレポート用です。

これは私が実行する必要のある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 に答える