SharePointの標準の「警告」機能を使用すると、アイテムが指定されたビューに表示された場合にのみアラートを送信できます。
カスタムワークフロー(c#)に同様のロジックを適用したいと思います。
SPListItemとSPView/SPQueryが与えられた場合、アイテムがそのビューに分類されるか、クエリに一致するかどうかを確認する効果的な*方法があるかどうかを誰かが知っていますか?
*効果的な意味。クエリを実行してからループしてアイテムを見つけるだけではありません。
SharePointの標準の「警告」機能を使用すると、アイテムが指定されたビューに表示された場合にのみアラートを送信できます。
カスタムワークフロー(c#)に同様のロジックを適用したいと思います。
SPListItemとSPView/SPQueryが与えられた場合、アイテムがそのビューに分類されるか、クエリに一致するかどうかを確認する効果的な*方法があるかどうかを誰かが知っていますか?
*効果的な意味。クエリを実行してからループしてアイテムを見つけるだけではありません。
SPListItem、SPQuery、...でそのような機能を備えたそのようなメソッドに出くわしたことはありません。現在のアイテムが返されたコレクションにあるかどうかを確認することは、それほど悪い考えではないようです。ただし、すべてのアイテムをループする代わりに、LINQクエリを使用して支援します。このようなもの:
itemCollection.Cast<SPListItem>().Any(i => i.ID.Equals(yourItem.ID));
ここで、「itemCollection」は、クエリまたはビューから取得したアイテムのコレクションです。「yourItem」は、コレクション内にあるかどうかを確認するアイテムです。
ただし、この質問への回答で説明したアイデアを採用すると、SPViewオブジェクトをクエリする方法についてアイデアがあります。
ビューからすべてのフィルターを実行するようにクエリを変更し、IDがアイテムのIDと等しい句を追加すると、1つの結果または0の結果が返され、カウントを確認できます。
パフォーマンスに関しては、マシューの提案とこのアイデアのどちらがより効率的かわかりません。
明日調査します...
更新 私のテクニックは効果的でした。(設計の観点から)XMLクエリではなくDB側でIDチェックを行う方が効率的だと思います。
マシューの提案に感謝します。