2016-08-05 63 views
0

我试图让只有指定从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);

但我所有的列表标记为红色像照片:enter image description here

MSN Reference

谁能帮助我如何检索特定的领域呢?问候

回答

0

这是因为TitleEnlace和其他属性,你累了,包括未在ListItem定义,你可以加载属性,如IdDisplayName但加载自定义字段,你必须指定你访问这些那些相同的方式 - 用[]如下面的片段

context.Load(
      items, 
       columns => columns.Include( 
       i=> i["Title"], 
       i=> i["Enlace"], 
       i=> i["Posicion"], 
       i=> i["Idioma"], 
       i=> i["Funcion"]));