2 つの部分からなるキーを持つテーブルがあります。ID 列、およびバージョン番号。レコードの「最新バージョンのみ」を選択しようとしています。
LINQ の式スタイルを使用して GROUP BY を実現し、バージョンの集計 MAX 値を取得しようとしています。 ただし、集計は行われません。
要約コード:
From C In Credentials
Group Join ....
Group Join ....
Group C.CredentialID, NE.ClientID, C.Version By
NE.ClientID, C.CredentialID Into CGroup = Group
From CG In CGroup
Select New With {
.ClientID = CG.ClientID,
.CredentialID = CG.CredentialID,
.MaxVersion = CGroup.Max(Function(p) p.Version)
}
実績:
ClientID CredentialID MaxVersion
1196 1 3
1196 1 3
1196 1 3
1196 2 1
望ましい結果:
ClientID CredentialID MaxVersion
1196 1 3
1196 2 1
も試してみましたが、同じ結果:
Group C By Key = New With
{Key NE.ClientID, Key C.CredentialID} Into CGroup = Group
From CG In CGroup
Select New With {
.ClientID = Key.ClientID,
.CredentialID = Key.CredentialID,
.MaxVersion = CGroup.Max(Function(p) p.Version)
}
一致するプロパティとカスタムの並べ替え/グループ化関数を使用してカスタム クラスを作成せず、クエリの最後にラムダ式を使用しないソリューションを探しています。
ありがとう!