2011-12-05 10 views
8
私は StartsWithEndsWithContainsで文字列プロパティをフィルタリングするタイプ Expression<Func<T, bool>>の式を作成するタイプ Expression<Func<T, string>の発現を渡す方法を作成したい

これらの式のようなメソッド:<機能<T, string>>

public Expression<Func<T, bool>> AddFilterToStringProperty<T>(Expresssion<Func<T, string>> pMyExpression, string pFilter, FilterType pFiltertype) 

のfilterType:

.Where(e => e.MiProperty.ToUpper().StartsWith("ABC")); 
.Where(e => e.MiProperty.ToUpper().EndsWith("XYZ")); 
.Where(e => e.MiProperty.ToUpper().Contains("MNO")); 

方法は次のようになります。

public static Expression<Func<T, bool>> AddFilterToStringProperty<T>(
    Expression<Func<T, string>> expression, string filter, FilterType type) 
{ 
    return Expression.Lambda<Func<T, bool>>(
     Expression.Call(
      expression.Body, 
      type.ToString(), 
      null, 
      Expression.Constant(filter)), 
     expression.Parameters); 
} 
+8

それを行ってください。お試しいただいたことをお知らせください。うまくいかない場合は、お手伝いします。 – drdwilcox

答えて

7

はこれを試してみてください含まれている列挙型があります。それはうまく動作し、私はこのようにこの場合のために "not null"の式を追加しました:

​​3210
+0

この回答に「not null」という表現を追加しました –

4

おかげ@dtb:ような動作の3(StartsWithEndsWithContains

関連する問題