私はこれを持っています:
// selectedOptions Contains a list of string constants
var selectedOptions = new List<string>(...);
Expression<Func<T, bool>> condition = null;
switch (propertyName)
{
case "Property1":
condition = x => selectedOptions.Contains(x.Property1);
break;
case "Property1":
condition = x => selectedOptions.Contains(x.Property2);
break;
case "Property3":
condition = x => selectedOptions.Contains(x.Property3);
break;
}
この条件は、Linq to Entities の Where() の述語として使用されます。アイデアは、EFが次の行に沿ってSQLを生成することですwhere Property1 in (...)
。これを行うためのより良い方法があるかどうかはわかりませんが、うまくいきます。
私の問題は、スイッチを削除して、次のようなものを持ちたいということです。
condition = x => selectedOptions.Contains(x.[propertyName]);
出来ますか?