私は、ユーザーがフェーズで項目をフィルタリングできるSP2010ページを作成しています(マルチチェックフィールドです)。パフォーマンス上の理由、およびこのクエリを行うためにSystem.Linq.Dynamicに頼らざるを得なかったフィルターの性質上、ダイナミックlinqを使用したマルチチョイスフィールド
私は(これは実際のコードではなく、私がやっている例示)以下のことを試してみた:
var lstObjects = new List<object>();
var query = "Phase = @0 ";
lstObjects.Add(Phase.Value);
context.myList.Where(query,lstObjects.ToArray());
項目は一つだけ位相を持って、濾過されたものであればこれは動作します。アイテムに複数のフェーズ(フェーズ1と2など)があり、フェーズ1でフィルタする場合は、それが表示されている必要があります。マルチチェックフィールドはどのようにフィルタリングできますか?
編集:言い換えれば、オブジェクト "Phase.Value"のタイプは、SPMetalを使用して生成されたフラグ列挙型です。
オブジェクトは複数のフェーズを持つことができますが、1つのみでフィルタリングできます。しかし、他の人がフィルタリングして最良のパフォーマンスを得るために、クエリは動的なLinqでなければなりません。 – jpiolho
私はあなたを完全に理解しているとは言えません。 mオブジェクト(私の例では)は複数のフェーズを持っていますか?またはlstObjectsに複数のフェーズがあるか、その両方ですか? –