30

私は、作成している非常に具体的な検索Webサービスに提供されたキーワードに基づいてCAMLを動的に生成するための概念実証コードに取り組んでいます。この証明には、SharePointが提供する検索Webサービスを使用していません。私は私が達成しようとしていることのためにすでにそうしました。私のすべての研究から、私が達成しようとしていること、つまり複数のフィールドで複数の値をチェックすることの近い例を見つけることができません。はい、私はすでにSOを調べて、これを含めて私の答えを探しました。CAMLクエリの構築についてサポートが必要です。

そうは言っても、可能であれば、次のSQLのようなクエリをCAMLでどのように記述できますか?

SELECT FirstName, LastName, Description, Profile
FROM SomeFakeTable
WHERE (FirstName = 'John' OR LastName = 'John' OR Description = 'John' OR Profile='John')
  AND (FirstName = 'Doe' OR LastName = 'Doe' OR Description = 'Doe' OR Profile='Doe')
  AND (FirstName = '123' OR LastName = '123' OR Description = '123' OR Profile='123')
4

3 に答える 3

57

1 つの条件グループ (And | Or) に 3 つ以上の条件を入れることは許可されていないため、追加のネストされたグループ ( MSDN ) を作成する必要があります。式A AND B AND Cは次のようになります。

<And>
    A
    <And>
        B
        C
    </And>
</And>

CAML に変換された SQL のようなサンプル (XML タグが一致することを願っています;)):

<Where>
    <And>
        <Or>
            <Eq>
                <FieldRef Name='FirstName' />
                <Value Type='Text'>John</Value>
            </Eq>
            <Or>
                <Eq>
                    <FieldRef Name='LastName' />
                    <Value Type='Text'>John</Value>
                </Eq>
                <Eq>
                    <FieldRef Name='Profile' />
                    <Value Type='Text'>John</Value>
                </Eq>
            </Or>
        </Or>
        <And>       
            <Or>
                <Eq>
                    <FieldRef Name='FirstName' />
                    <Value Type='Text'>Doe</Value>
                </Eq>
                <Or>
                    <Eq>
                        <FieldRef Name='LastName' />
                        <Value Type='Text'>Doe</Value>
                    </Eq>
                    <Eq>
                        <FieldRef Name='Profile' />
                        <Value Type='Text'>Doe</Value>
                    </Eq>
                </Or>
            </Or>
            <Or>
                <Eq>
                    <FieldRef Name='FirstName' />
                    <Value Type='Text'>123</Value>
                </Eq>
                <Or>
                    <Eq>
                        <FieldRef Name='LastName' />
                        <Value Type='Text'>123</Value>
                    </Eq>
                    <Eq>
                        <FieldRef Name='Profile' />
                        <Value Type='Text'>123</Value>
                    </Eq>
                </Or>
            </Or>
        </And>
    </And>
</Where>
于 2011-06-01T16:12:17.947 に答える
0

U2U Query Builder http://www.u2u.net/res/Tools/CamlQueryBuilder.aspxを試すことができます。API U2U.SharePoint.CAML.Server.dll および U2U.SharePoint.CAML.Client.dll を使用できます。

私はそれらを使用しませんでしたが、あなたの仕事を達成するのに役立つと確信しています.

于 2011-06-01T15:58:14.770 に答える