2

EFを使用してpk列の最大値を取得することは可能ですか? pk 値に基づいてエンティティを取得する find メソッドのようなものを意味します。これは既にあります。

public TEntity Find(params object[] keyValues);

私は次のようなものを探しています:

public object PkMax<TEntity>();//which returns max of pk column

アップデート:

エンティティの pk に基づく動的な linq クエリを探していますが、現在、この SO の回答のおかげで pk を取得する方法を知っています: How to get the Primary Key(s) in Entity Framework 4.1, ie using DbContext

4

1 に答える 1

1

LINQ-to-Entities が式を SQL に変換できるように、手動で式を作成する必要があります。PK プロパティの文字列名を取得できるとのことなので、次のような拡張メソッドを使用できます。

public int GetMaxPK<T>(this IQueryable<T> query, string pkPropertyName)
{
    // TODO: add argument checks
    var parameter = Expression.Parameter(typeof(T));
    var body = Expression.Property(parameter, pkPropertyName);
    var lambda = Expression.Lambda<Func<T,int>>(body, parameter);
    var result = query.Max (lambda);
    return result;
}
于 2013-08-19T11:11:54.707 に答える