1

次のようなテーブルがあります。

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 番目のレコードのみを取得します。

4

2 に答える 2

0

LINQ sql のように見えますが、純粋な SQL では次のようにクエリを書くことができます

SELECT ConfigID ,MAX(VersionNo ) FROM CUSTOMIZE_COLUMNS_DETAIL WHERE ObjectType = 'objectType' GROUP BY ConfigID

私は sql でシナリオを再現しようとしましたが、役に立つかもしれません、ありがとう

于 2013-07-05T10:25:30.033 に答える