CAML查询过滤不起作用

时间:2015-06-17 14:30:47

标签: c# .net sharepoint sharepoint-2010 caml

我已经用Google搜索,以防查询格式不正确。但我正在验证它几个小时,并没有发现任何错误。问题很常见:​​查询不会过滤并返回所有数据。

我不知道出了什么问题,因为我在Stramit CAML查看器中检查了这个查询,它运行正常。

        private static SPListItemCollection GetItemsForThisUserAndEvent(SPList list)
        {
            const string queryMask = 
@"<Where>
    <And>
        <Eq>
            <FieldRef Name='{0}' LookupId='TRUE' />
            <Value Type='Lookup'>{1}</Value>
        <Eq>
        <Eq>
            <FieldRef Name='{2}' LookupId='TRUE' />
            <Value Type='User'>{3}</Value>
        <Eq>
    </And>
<Where>";

            var query = string.Format(queryMask, MemberListFieldLookupEventName, SPContext.Current.ListItem.ID,
                                                 MemberListFieldLogin, SPContext.Current.Web.CurrentUser.ID);
            return list.GetItems(query);
        }

1 个答案:

答案 0 :(得分:1)

接受字符串的SPList.GetItems的重载实际上是this overload,它接受​​应该返回的字段列表的params string[]参数,同时返回中的所有项目列表。它不期待CAML查询。

您需要将CAML填充到SPQuery对象中,然后将SPQuery对象提供给GetItems

list.GetItems(new SPQuery() { Query = query });