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

SpY*_*3HH 6 .net c# caml sharepoint-2010

我在这里检查过文章并用Google搜索直到我的指尖是蓝色的.我已阅读,阅读和阅读,似乎无法在Sharepoint2010中围绕CAML联接.

问:是否有人可以显示我怎么一个完整的例子正好 CAML加入查询比较SQL联接查询?

*For Example (SQL of Course, just something to work with)*

If I had a Database named "whatever" & it contained two tables.  
We'll name these "tableA" & "tableB", respectively.

Let's say they look like this:

 - tableA - 
ID | Column1 | Column2 | Column3

 - tableB - 
ID | Column4 | Column5 | Column6

SELECT tableA.Column1, tableA.Column2, tableB.Column4 
FROM tableA 
INNER JOIN tableB ON tableA.ID = tableB.ID

Would give me something like:

 - newTable - 
Column1 | Column2 | Column4
 result | result  | result
 result | result  | result
 result | result  | result
Run Code Online (Sandbox Code Playgroud)

所以,我的问题是,我是否可以使用CAML联接查询字符串在Sharepoint 2010中获得相同操作的确切示例?

pod*_*ska 11

从您的某个列表中创建查询.

 SPList list = SPContext.Current.Site.RootWeb.Lists["TableA"];
 SPQuery query = new SPQuery();
Run Code Online (Sandbox Code Playgroud)

要进行连接,请设置query.Joins

 <Join Type="INNER" ListAlias="TableB">
    <Eq>
        <FieldRef Name="TableA" RefType="ID" />
        <FieldRef List="TableB" Name="ID" />
    </Eq>
 </Join>
Run Code Online (Sandbox Code Playgroud)

query.ProjectedFields

  <Field Name="TableBColumn4" Type="Lookup" List="TableB" ShowField="Column4">
Run Code Online (Sandbox Code Playgroud)

选择要显示的字段设置query.ViewFields

  <FieldRef Name="Column1">
  <FieldRef Name="Column2">
  <FieldRef Name="TableBColumn4">      
Run Code Online (Sandbox Code Playgroud)

然后

SPListItemCollection result = tablea.GetItems(query);
Run Code Online (Sandbox Code Playgroud)

或类似的东西(它来自记忆!)

  • 你错过了一件重要的事情,你只能加入查阅字段. (4认同)
  • 如果我犯了任何可怕的错误,请告诉我:) (2认同)

小智 5

我的挫折反映了你的,这里还有一些提示:

  1. 根据关系中的子表启动查询.(我无法从你的例子中看出哪个是父母,哪个是孩子.)

  2. 我同意Rob Windsor的说法,它必须基于Lookup字段,但是从我的测试中,它必须是对ListItemID类型字段的查找.在SharePoint中,这是内部ID字段.(我知道这一点,因为我查找了一个文本字段,它只是不起作用.浪费了几个小时.)我目前在Microsoft论坛上有一篇帖子,询问RefType参数是否可以是'ID以外的任何内容',所以也许留意这一点.最后,如果在投影字段中,Type参数必须始终为'lookup',那么为什么需要它?

  3. 没有CAML查询构建器(YACQB和U2U)支持连接,所以不要费心下载和尝试.