次のようなコードがたくさん見られます
var customrs = MyDataContext.Customers.Where(...);
if (!String.IsNullOrEmpty(input)) {
customers = customers.Where(c => c.Email.Contains(input));
}
IQueryable で Where を呼び出す前に、入力が有効であることを確認する拡張メソッドにこれを入れて、次のように呼び出すことができるようにしたいと思います。
customers = MyDataContext.Customers.Where(...)
.ContainsText(c => c.Email, input);
私の拡張メソッドは次のようになります
public static IQueryable<T> ContainsText<T>(this IQueryable<T> source, Expression<Func<T, string>> selector, string text) {
if (String.IsNullOrEmpty(text) {
return source;
}
else {
//do something here
}
}
解析された式で Contains() を呼び出すにはどうすればよいですか? または、解析された式に解析されたテキストが含まれている結果の IQueryable を返す別の方法はありますか?
更新:LinqからSql用です