我在SharePoint2010中有2个列表。第一个列表E列出所有位置。

在第二个列表H中,我使用第一个E列表作为查找位置。每个月用户都会在列表H中输入信息。

列表E具有(位置)

列表H有(位置(从列表E查找),月份,库存,名称)

我需要知道哪个位置本月没有提供库存。

我之前使用.net,在SQL中我使用的语句是

SELECT    E.Canteen_Location
FROM    dbo.v_Location AS E LEFT OUTER JOIN
               dbo.tblInventory AS H ON H.Canteen = E.CanteenNum  And Month=@Month
WHERE (H.Canteen IS NULL)

现在我们转移到SharePoint2010,我不知道这是否可能。有人能帮我吗?

拉里萨

有帮助吗?

解决方案

是的,您可以在您的Joins节点中添加一个加入type="LEFT",如下所示:

  <Join Type="LEFT" ListAlias="h">
    <Eq>
      <FieldRef Name="Canteen" RefType="Id" />
      <FieldRef List="v_location" Name="CanteenNum" />
    </Eq>
  </Join>
.

这是一个很好的例子

您也可能想调查使用linq to sharepoint with spmetal 因为这将提供Querying SharePoint的更简单的语法。

LINQ的语法看起来像这样:

var query = from e in db.v_location
            join h in db.tblInventory
               on h.Canteen equals e.CanteenNum into sh
            from x in sh.DefaultIfEmpty()
            where h.Canteen == null
            select new {
               e.Canteen_Location
            }; 
.

其他提示

拉里萨,

CAML查询确实允许使用左连接 <Join> 标签。..见 连接和预测 msdn上的文章。..

加入有一个 Type 属性的值可以是 INNERLEFT, ,见 加入...

如果你不能弄清楚,我可以给你完整的CAML查询。..让我知道!

许可以下: CC-BY-SA归因
scroll top