CAML-запрос возвращает неверные результаты? - PullRequest
0 голосов
/ 13 января 2011

У меня есть следующий код:

                    SPQuery oQuery = new SPQuery();
                    oQuery.Query = @"<Query>
                                           <Where>
                                              <And>
                                                 <Eq>
                                                    <FieldRef Name='PublishToSM' />
                                                    <Value Type='Boolean'>1</Value>
                                                 </Eq>
                                                 <IsNull>
                                                    <FieldRef Name='SMUpdateDate' />
                                                 </IsNull>
                                              </And>
                                           </Where>
                                        </Query>";
                    SPListItemCollection collListItems = list.GetItems(oQuery);

                    NevCoSocialMedia.NevCoFacebook fb = new NevCoSocialMedia.NevCoFacebook();

                    foreach (SPListItem oListItem in collListItems)
                    {
                        if (oListItem.Fields.ContainsField("PublishToSM") && Convert.ToBoolean(oListItem["PublishToSM"]) == true)
                        {
.
.
.

Мой вопрос: зачем мне нужно последнее if заявление? Если у меня нет этого, он выдаст ошибку, сообщающую, что идентификатор не существует, когда он пытается сделать oListItem["PublishToSM"]. Это кажется невозможным, так как мой CAML-запрос проверяет, что он имеет соответствующее значение ...

Ответы [ 4 ]

2 голосов
/ 13 января 2011

удалить элемент запроса

упаковка вашей камеры

0 голосов
/ 21 сентября 2011

Я также столкнулся со странной проблемой с использованием логического типа в запросе caml и раньше. В 6 из 7 наших сред Boolean работал нормально, но в одном из них он не работал и полностью испортил один из наших рабочих процессов. Мы так и не смогли выяснить, почему.

Попробуйте использовать Integer или Bit для поля «PublishToSM» и посмотрите, получите ли вы другой результат.

0 голосов
/ 15 января 2011

Всегда добавляйте ViewFields, если вы этого не сделаете, в возвращаемые элементы списка будут заполнены только основные поля, такие как ID и Title.

0 голосов
/ 13 января 2011

Попробуйте изменить тип значения на целое число

<Eq>
    <FieldRef Name='PublishToSM' />
    <Value Type='Integer'>1</Value>
</Eq>

http://www.sharepointblues.com/2010/02/22/caml-and-querying-boolean-fields/

...