c#CamlQuery ListItemCollection firstOrDefault无法正常工作

时间:2016-10-26 15:46:06

标签: c# model-view-controller sharepoint caml

您好我自己做了一个教程环绕sharepoint和c#mvc。 我已经按照了一些内容来添加列表并继续编辑和删除。

所有工作都在List中使用 getItemById 查找。但这有很大的局限性。 所以我开始研究CamlQuery的问题 再经过一些试验和错误后,我得到了一些选择第一项的东西。

所以我想我会使用 firstOrDefault 来获取列表项,然后我可以编辑/删除它。 这虽然似乎无法正常工作,但是通过列表呢。

基本问题是为什么这样做

Web web = _context.Web;
            List categoryList = web.Lists.GetByTitle("Categories");
            CamlQuery query = new CamlQuery();

            query.ViewXml = @" <View><Query> <OrderBy> <FieldRef Name='ID' Ascending='True' /> </OrderBy> </Query> <RowLimit>1</RowLimit> </View>";

            ListItemCollection categories = categoryList.GetItems(query);

            _context.Load(categories);
            _context.ExecuteQuery();

            foreach (var category in categories)
            {

                category.DeleteObject();
            }


            _context.ExecuteQuery();

但这不是

Web web = _context.Web;
            List categoryList = web.Lists.GetByTitle("Categories");
            CamlQuery query = new CamlQuery();

            query.ViewXml = @" <View><Query> <OrderBy> <FieldRef Name='ID' Ascending='True' /> </OrderBy> </Query> <RowLimit>1</RowLimit> </View>";

            ListItemCollection categories = categoryList.GetItems(query);

            _context.Load(categories);
            _context.ExecuteQuery();

            var category = categories.FirstOrDefault();

            category.DeleteObject();

            _context.ExecuteQuery();

作为附带问题,查询

<View><Query> <OrderBy> <FieldRef Name='ID' Ascending='True' /> </OrderBy> </Query> <RowLimit>1</RowLimit> </View>

效率这么高吗?它是否获得所有行,然后在视图中施加限制?

0 个答案:

没有答案