2

私はこの既存のSQL文を持っています:

Select Count(ordid),isnull(prcsts,'NOT STARTED')
from lwp
where lwp in( Select max(Id) from lwp group by ordid)
group by prcsts

linq-to-sql を使用するように変換したいのですが、サブクエリで式を処理する方法がわかりませんgroup by。これどうやってするの?

lwpのリストを取得するメソッドがあるEntity Frameworkを使用しています。やったのはほんの一部。

Entitydb.lwpmethod
        .GetList
        .Where(Function(F) F.ID = **Max(Function(O)  O.ordid**)
        .GroupBy(Function(F) F.prcsts)
        .Select(Function(F) New With {.A = F.Count, .B = F.Key})
        .ToList

max 関数で group by subquery を書き込めません。

4

1 に答える 1

0

まず、これは ではありません。それは、単一の要素を返すのでですin。また、あなたのSQLクエリは節に含まれています.おそらくタイプミスです. それを念頭に置いて、あなたが望むものは次のようなものです:=max()lwpwhereid

.Where(row=>row.ID=Entitydb.lwpmethod.GetList()
                                     .Where(r=>r.ordid=row.ordid)
                                     .Max(r=>r.ID))

C# コードですが、アイデアはわかります。

ちなみに、これは最後の行を選択しているように見えます。単にid子孫順に並べ替えて、最初の要素を取得しないのはなぜですか?

于 2013-11-22T18:27:33.067 に答える