2016-07-01 9 views
0

私はEntity Frameworkを初めて使用しています。一般的なエンティティフレームワークの読み取り方法

私はこのUserクラスとそのUserDAOのメソッドを持っています。

I'veはすでに自分の名前でユーザーを検索するための

public IList<User> ReadUsersByName(string _name) { 

var search = from m in context.Users 
      where m.Name.Contains(_name) 
      select m; 

IList<User> _users = search.ToList(); 
return _users; 
} 

を作成しました。

名前以外にも、私のユーザーには、(たとえば、年齢などの)検索する他の属性があります。

「年齢」の「名前」を変更するだけで、このコードのほとんどを複製する必要がありますか?

1つのメソッドしか作成せず、検索値AND検索フィールドをparamで渡したいと思います。出来ますか?

+0

プロパティ名と検索値をパラメータとして使用するリフレクションを使用するメソッドを作成できます。 –

+0

ニース。それ、どうやったら出来るの? – ThalesMiguel

+1

サイドノート:Entity FrameworkとDAOは厄介な組み合わせです。 –

答えて

1

あなたが関数にWHERE句渡すことができます。

がこの回答を参照してください:だからC# Linq where clause as a variable

を、あなたはこのような何か書くことができます:

public IList<User> ReadUsersWhere(Expression<Func<User, bool>> whereClause) { 
    return context.Users.Where(whereClause).ToList(); 
} 

をそして、あなたはこのようにそれを呼びたいです:

foo.ReadUsersWhere(u => u.Name.Contains("Joe")); 

しかし、その時点で、基本的にはIQueriableを公開/再構築するだけです。

+0

ありがとうございました。それはまさに私が探していたものです。 – ThalesMiguel

関連する問題