0

私は、以下のようにコード化された一般的なクエリメソッドを持つリポジトリpatrenを使用してEF4を使用しています。

 public IEnumerable<T> Query(Expression<Func<T, bool>> filter)
    {
        return objectSet.Where(filter);
    }

私は以下のような完全なオブジェクトを選択するためにクエリを実行する方法を知っています:

context.PeriodRepository.Query(a => a.EntityId == selectedEntityId);

強制オブジェクトではなくクエリを実行する方法を教えてください。プロパティだけを取得する方法を教えてください。プロパティをテキストボックスに直接配置したいと思います。

ありがとう

編集

次のようにクエリから完全なオブジェクトを取得することにしました。

MyType obj = context .Signatories1Repository.Query(a=>a.Id==signatory1Id);

しかし、それはエラーを示しています:

IEnumarableからtypeに変換できません。明示的な変換が存在します。キャストが足りませんか?

正しく動作させる方法を教えてください。

4

1 に答える 1

2

プロパティ(または一部のプロパティ)のみを取得するには、必要なSelect()ものだけを取得する変換を実行するためにlinq拡張メソッドを呼び出す必要があります。

context.PeriodRepository.Query(a => a.EntityId == selectedEntityId)
       .Select(x => x.TheProperty);

また、QueryメソッドではIQueryable<T>なく戻ることをお勧めします。IEnumerable<T>実際、私はクエリメソッドを避けてリポジトリを実装IQueryable<T>するだけなので、代わりにすぐに使用できるlinq拡張メソッドを使用できますWhere()

于 2012-09-03T01:24:23.430 に答える