2011-01-18 10 views
2

ラムダ式を使ったような条件でこんにちは質問。ラムダ式のような演算子の使い方

私は私の質問は、クエリのように行う方法である

(その少し緊急)あなたはまもなくこの投稿に返信することを願って、私は私がSTARTSWITHを使用することができます理解し、同じようなどまたはsqlmethodsが含まれています。しかしラムダ式でそれらを使う方法。

例:Personエンティティには名前が含まれています。下の例では、私はperson.name = 'john'を検索します。

しかし、ユーザーは比較のために実行時に任意の演算子を選択することができます(等価、等価、開始値、終了値など) 例: person.name = 'john'やperson.nameのように 'j%'やperson.name '%j'やperson.nameに '%jo%'が含まれている可能性があります。

どのようにしてダイナミッククエリを構築できますか?上記のコードを修正してお知らせください。私はlinqにはかなり新しいので、ラムダをよく理解していません。

あなたのお手伝いがありがとうございます。

ソースコード -

DataContext context = new DataContext // linq to sql data context. 
    Query<Person> q = new Query<Person>(context); 
    Expression<Func<Manufacturer, bool>> expn = DynamicExpression.ParseLambda<Manufacturer, bool>(condition, value); //condition is "[email protected]", value = string[] i.e - "john" 
       q.Where = expn; 
       return q.SingleOrDefault<Person>(); 

EXPNの例は、名前= @ 0ですが、私はどのように '0%@%' のような名前をしたいですか?

QueryクラスLinq2SQLで

public Expression<Func<T, bool>> Where 
{ 
    set { m_where = value; } 
} 

答えて

-1

を次のように、あなたがSqlMethods.Likeを使用することができます。

+0

が、どのようにDataContextのコンテキスト=新しいのDataContext // LINQ SQLデータコンテキストへ。 クエリ q =新しいクエリ(コンテキスト)。 式> expn = DynamicExpression.ParseLambda (条件、値); //条件は "name = @ 0"、値=文字列[]すなわち - "john" q.Where = expn; return q.SingleOrDefault (); – user476566

5

これを試してみるとよいでしょう。発現用

list.exists(要素=> element.startswith( "リストに検索するテキストを開始する"))

関連する問題