2017-12-07 2 views
0

私のエンティティでは、 "aaa"、 "bbb"、 "ccc"などのようにいくつかのフィールド/カラムを持っています。それぞれ、 "s"または "n" 。例えばLINQ varはフィールド/カラムwhere句

、私はこのしようとした場合:

items = items.Where(p => p.aaa == "s"); 

をそれは(それが動作しますが、テストした) "s" を持つAAAとそれらにレコードを制限します。

これで、検索するフィールドの名前を持つクエリ文字列を渡す必要があります。

var qsintervencao = Request.QueryString["intervencao"]; 

if (qsintervencao == "" || qsintervencao == null || qsintervencao == "all") { 
    <a>TEST: </a> qsintervencao not set or set to all 
} else { 
    items = items.Where(p => [email protected] == "s"); 
    <a>TEST: </a> @qsintervencao 
} 

QSは、qsintervencao(およびテスト)動作は、選択されたフィールド(AAAまたはBBB)、しかしレコードが返されませんを出力します。

varをwhere句に渡す方法はありますか?

+0

'qsintervencao ==" "|| qsintervencao == null || qsintervencao == "all" '=>' String.IsNullOrEmpty(qsintervencao)|| qsintervencao == "all" ' – Alexander

+0

あなたは何を探していますか?それが本当に必要かどうか疑問だ。これの背後にある動機は何ですか? – Alexander

+0

これは単なる研究プロジェクトの統計ページです。これを自動的に行う方法がない場合は、各フィールドのif節を作成できます。 –

答えて

0

リフレクションのように、関連するプロパティを動的に決定することができます。

items = items.Where(p => p.GetType().GetProperties().FirstOrDefault(property => property.Name == qsintervencao).GetValue(p, null) == "s"); 
+0

エラーCS1977:最初にデリゲートまたは式ツリータイプにキャストしなくても、ラムダ式を動的ディスパッチ処理の引数として使用できません –

+0

アイテムの宣言方法は?それは動的ですか? – lucky

+0

var items = AsDynamic(App.Data ["data"]); –