0

通常、複数の可能なフィルターを含むグリッド結果がある場合、次のようなロジックを使用できます。

var query = db.Something;
if(isFilter1 != null)
     query = query.Where(x=>x.Prop1 == isFilter1);
}
if(isFilter2 != null)
     query = query.Where(x=>x.Prop2 == isFilter2);
}
.... etc...
var finalResult = query.ToList();

しかし今、私はこの種のロジックを使用したいと考えていますが、「AND」だけでなく「OR」を使用しています。私が達成したい「クエリの最終結果」の簡単な例。

var finalResult = db.Something.Where(x => 
           x.Prop1 == null && 
           x.Prop2 != 0 && 
           x.Prop3 == id && 
           (x.Prop4 == "String1" || x.Prop4== "String2" || x.Prop4== "String3"));
4

1 に答える 1

2

メソッドを使用できますContains

var list = new[] { "string1", "string2", "string3"};

var finalResult = db.Something.Where(x => 
       x.Prop1 == null && 
       x.Prop2 != 0 && 
       x.Prop3 == id && list.Contains(x.Prop4));
于 2013-05-06T07:44:16.317 に答える