2017-02-10 5 views
-1

クラスの中には同じ名前のプロパティがあります。類似のクラスに同じLINQ式を使用

var allBookNames = GetValue<Book>(x => x.Name) 
var allCustomerNames = GetValue<Customer>(x => x.Name) 

ラインall.Select(express).ToList()明らかに:

public void List<string> GetValue<T>(Expression<Func<T, string>> expression) where T : class 
{ 
    var all = new MyEntities<T>().GetAll(); 
    return all.Select(expression).ToList(); 
} 

はその後、私のような機能を呼び出すことができます。私はこのようなもので、これらのオブジェクトのプロパティ値のリストを返すために、一般的な機能を使用したいです動作しません。どのように修正する必要がありますか?

UPDATE

ごめんなさい。私はアホです。問題は、GetAll()メソッドがSelectメソッドを持たないICollectionを返すことです。 As Queryable()を呼び出すだけでいいです。あなたの時間を無駄にして申し訳ありません。

この投稿を閉じる。

+0

どのようなエラーが表示されますか? –

+0

それはうまくいかないという意味ですか?エラーが出ますか?コンパイル時間または実行時間?それは空の結果を与える? –

+0

EFは渡された式の値が好きではないため、動作しません –

答えて

0

私が正しく理解しているかわからない!

あなたはEntity Frameworkを使用していると思いますが、これをリポジトリパターンで実現できます。あなたが提供するエンティティのためのDbSetを返しますメソッドを実装する必要があるすべて:

public DbSet<T> GetValue<T>() 
    where T : class 
{ 
    return context.Set<T>(); 
} 

次に、あなたが呼び出すことができます。

repository.GetValue<Book>().Select(p => p.Name == "John"); 

それは名前ジョンでブックを返します。

Set<T>()については、MSDNをお読みください。

関連する問題