从列表Sharepoint Online WebApi中检索特定项目

时间:2016-08-05 17:56:17

标签: c# asp.net sharepoint asp.net-web-api

我尝试仅从sharepoint列表中获取指定的值,因此我的代码为:

 public List<MenuPrincipal> GetMenuOptions(string idioma)
        {
            List<MenuPrincipal> result = new List<MenuPrincipal>();
            try
            {
                SecureString pwd = SPAccess.GetPasswordFromConsoleInput(Definitions.UserPassword);

                using (var context = new ClientContext(Definitions.WebUrl))
                {
                    context.Credentials = new SharePointOnlineCredentials(Definitions.UserName, pwd);
                    List listResult = context.Web.Lists.GetByTitle("MenuPrincipal");

                    //CamlQuery query = CamlQuery.CreateAllItemsQuery(1000);

                    CamlQuery query = new CamlQuery();
                    query.ViewXml = string.Format("<View><Query><Where><Eq><FieldRef Name='Idioma'/><Value Type='Text'>{0}</Value></Eq></Where></Query><RowLimit>1000</RowLimit></View>", idioma);
                    ListItemCollection items = listResult.GetItems(query);



                    context.Load(items);
                    context.ExecuteQuery();

                    foreach (ListItem item in items)
                    {
                        result.Add(new MenuPrincipal
                        {
                            Titile = item["Title"] == null ? string.Empty : item["Title"].ToString(),
                            Enlace = item["Enlace"] == null ? string.Empty : item["Enlace"].ToString(),
                            Posicion = item["Posicion"] == null ? 0 : Convert.ToInt32(item["Posicion"]),
                            Idioma = item["Idioma"] == null ? string.Empty : item["Idioma"].ToString(),
                            Funcion = item["Funcion"] == null ? string.Empty : item["Funcion"].ToString()
                        });    
                    }
                }
            }
            catch (Exception)
            {
                throw;
            }

            return result.OrderBy(x => x.Posicion).ToList();
        }

但是它有很多价值,我只需要在我的foreach中的值,所以我尝试做类似的事情:

context.Load(
            items,
                lists => lists.Include( 
                list => list.Titile.
                list => list.Enlace,
                list => list.Posicion,
                list => list.Idioma,
                list => list.Funcion));

而不是context.Load(items);

但我的所有列表都标有红色,如照片:http://10.0.18.66:50772/jars/SimpleJobApp-2016-08-05T17_44_07.353Z.jar

MSN enter image description here

有人可以帮我解决如何在那里检索特定字段的问题吗?此致

1 个答案:

答案 0 :(得分:0)

这是因为TitleEnlace以及您厌倦要包含的其他属性未在ListItem上定义,您可以加载Id或{{1}等属性但是要加载自定义字段,您必须指定与访问这些字段相同的方式 - 使用DisplayName,如下面的代码段所示

[]