2014-03-12 32 views
1

我有两个简单的列表。一个被称为雇员,其中有1列称为标题。另一个被称为公司,其中有1列称为标题。我在员工列表中添加了一个查找列,并将其指向公司列表的标识。CAML查询从父列表中提取列

现在我写了使用CSOM(没有javascript和无服务器对象模型)

ClientContext c = new ClientContext(url); 
    List el = c.Web.Lists.GetByTitle("Employee"); 
    CamlQuery query = new CamlQuery(); 
    query.ViewXml = @"<View> 
         <ViewFields> 
          <FieldRef Name='ID'/> 
          <FieldRef Name='Title'/> 
          <FieldRef Name='CompanyTitle'/> 
         </ViewFields> 
         <Joins> 
          <Join Type='LEFT' ListAlias='Company'> 
           <Eq> 
            <FieldRef Name='Company' RefType='Id'/> 
            <FieldRef List='Company' Name='ID'/> 
           </Eq> 
          </Join> 
         </Joins> 
         <ProjectedFields> 
          <Field Name='CompanyTitle' Type='Lookup' List='Company' ShowField='Title'/> 
         </ProjectedFields> 
         <Query> 
          <Where> 
           <Eq> 
            <FieldRef Name='Company' LookupId='TRUE' /> 
            <Value Type='Lookup'>10</Value> 
           </Eq> 
          </Where> 
         </Query> 
        </View>"; 

    ListItemCollection items = el.GetItems(query); 
    c.Load(items); 
    c.ExecuteQuery(); 
    foreach (ListItem i in items) { 
     Console.WriteLine(i["Title"]); 
     Console.WriteLine(i["CompanyTitle"]); 
    } 

它的工作原理验证码...但它打印

E01 Microsoft.SharePoint.Client.FieldLookupValue E11 Microsoft.SharePoint.Client.FieldLookupValue E21

但不是看到“Microsoft.SharePoint.Client.FieldLookupValue”,我想看到第e父列表中列的实际内容。

我的代码有什么问题?

回答

0

得到它

Console.WriteLine(((FieldLookupValue)i["CompanyTitle"]).LookupValue); 

把它在这里,这样它可以帮助别人