C# 如何像SQL连接一样使用CAML连接?

C# 如何像SQL连接一样使用CAML连接?,c#,.net,sharepoint-2010,caml,C#,.net,Sharepoint 2010,Caml,我查了这里的文章,在谷歌上搜索,直到我的指尖发青。我读了又读,读了又读,但似乎无法在Sharepoint2010中对CAML连接保持清醒的头脑 问题:有人能给我举一个完整的例子,说明CAML连接查询与SQL连接查询的比较结果吗 因此,我的问题是,我能不能得到一个确切的例子,说明在Sharepoint 2010中使用CAML连接查询字符串执行的相同操作?从列表中创建查询 SPList list = SPContext.Current.Site.RootWeb.Lists["TableA"];

我查了这里的文章,在谷歌上搜索,直到我的指尖发青。我读了又读,读了又读,但似乎无法在Sharepoint2010中对CAML连接保持清醒的头脑

问题:有人能给我举一个完整的例子,说明CAML连接查询与SQL连接查询的比较结果吗


因此,我的问题是,我能不能得到一个确切的例子,说明在Sharepoint 2010中使用CAML连接查询字符串执行的相同操作?

从列表中创建查询

 SPList list = SPContext.Current.Site.RootWeb.Lists["TableA"];
 SPQuery query = new SPQuery();
要进行连接,请将
query.Joins
设置为

 <Join Type="INNER" ListAlias="TableB">
    <Eq>
        <FieldRef Name="TableA" RefType="ID" />
        <FieldRef List="TableB" Name="ID" />
    </Eq>
 </Join>
  <Field Name="TableBColumn4" Type="Lookup" List="TableB" ShowField="Column4">
  <FieldRef Name="Column1">
  <FieldRef Name="Column2">
  <FieldRef Name="TableBColumn4">      
要选择要显示的字段,请将
query.ViewFields
设置为

 <Join Type="INNER" ListAlias="TableB">
    <Eq>
        <FieldRef Name="TableA" RefType="ID" />
        <FieldRef List="TableB" Name="ID" />
    </Eq>
 </Join>
  <Field Name="TableBColumn4" Type="Lookup" List="TableB" ShowField="Column4">
  <FieldRef Name="Column1">
  <FieldRef Name="Column2">
  <FieldRef Name="TableBColumn4">      

或者诸如此类的事情(来自记忆!)

我的沮丧反映了你的沮丧,这里有更多的提示:

  • 根据关系中的子表启动查询。(从你的例子中,我看不出哪个是父母,哪个是孩子。)

  • 我同意Rob Windsor的观点,它必须基于查找字段,但根据我的测试,它必须是对ListItemID类型字段的查找。在SharePoint中,这是内部ID字段。(我知道这一点,因为我有一个文本字段的查找,但它根本不起作用。浪费了几个小时的生命。)我目前在Microsoft论坛上有一篇帖子,询问RefType参数是否可以是除“ID”以外的任何其他参数,所以可能要注意这一点。最后,如果在投影字段中,类型参数必须始终为“lookup”,那么为什么需要它

  • 没有一个CAML查询生成器(YACQB和U2U)支持连接,所以不必费心下载和尝试


  • 事实上,这有助于它做得更好。目前正在测试。谢谢。如果我犯了任何严重的错误,请告诉我:)你错过了一件重要的事情,你只能在查找字段上加入。@podiluska嘿,在没有查找字段的情况下加入是可能的吗?@podiluska这里TableA是列表名还是查找字段名?