次のようなテーブルがあります。
ConfigID | VersionNo | ObjectType
ConfigID と VersionNo が一意のキーを構成します。オブジェクト タイプに基づいて、各 configID の VersionNo が最も高いレコードを選択できるようにしたいと考えています。
私が試してみました
configs = (from config in configRepository.FindBy(x => x.ObjectType.Equals(typeof(Node).ToString(), StringComparison.InvariantCultureIgnoreCase))
group config by config.ConfigID into orderedConfigs
select orderedConfigs.OrderBy(x => x.ConfigID).ThenByDescending(x => x.VersionNo).First());
編集: FindBy は基本的にただの where 句であることを追加する必要があります。しかし、私は結果を得ていません。これで私を助けてください。
編集:
テーブル内のデータは次のようになります。
3fa1e32a-e341-46fd-885d-8f06ad0caf2e | 1 | Sybrin10.Common.DTO.Node
3fa1e32a-e341-46fd-885d-8f06ad0caf2e | 2 | Sybrin10.Common.DTO.Node
51d2a6c7-292d-42fc-ae64-acd238d26ccf | 3 | Sybrin10.Common.DTO.Node
51d2a6c7-292d-42fc-ae64-acd238d26ccf | 4 | Sybrin10.Common.DTO.Node
8dbf7a33-441f-40bc-b594-e34c5a2c3f51 | 1 | Some Other Type
91413e73-4997-4643-b7d2-e4c208163c0d | 1 | Some Other Type
これから、configID のバージョン番号が最も高く、必要なタイプであるため、2 番目と 4 番目のレコードのみを取得します。