CAML查询与联接和条件在一起

时间:2016-07-02 05:05:40

标签: c# asp.net visual-studio sharepoint caml

我有一个场景,请帮我构建一个caml查询。

Sharepoint List 1 包含列:

  • ID
  • 客户名称

Sharepoint List 2 包含列:

  • ID
  • CUST_ID
  • 产品名称
  • 数量

ID(list 1)=Cust_ID(list 2)

假设一个人从特定分支登录,首先检查当前登录分支。 然后在 asp网格视图中显示Sharpeoint列表2的所有内容,但仅显示当前分支的所有内容(分支将从列表1中获取)。意味着连接查询是必要的,以及检查当前登录分支的条件。

请帮我构建一个caml查询,我尝试了一些caml查询构建器,但dint得到了结果。

1 个答案:

答案 0 :(得分:0)

你不能加入。在这种情况下你必须查找分支到List2,如果有多个brach为1个用户或两者你可以创建模型,如你要查询到第二个列表ID和分支所以如果你没有分支名称或分支代码,你可以获得该用户的所有数据加载该数据进行建模,你可以从模型中选择你想要的东西

public class AllDatas
{
public AllDatas(SplistItem item)
{
CustomerName = item["CustomerName"]
Branch = item["Branch"]
Product = item["Product"]
.
.
.
}

string CustomerName {get;set}
string Branch {get;set;}//this can be int what evet you want
string Product Name {get;set}
int Quantity {get;set}
int Value {get;set}
}
  

我假设您有分支和ID,所以如果您没有ID并且只有分支,那么您应该使用Branch来获取ID以获取ID以查询List2,您可以使用相同的caml和方式从list1获取数据。

using(SPSite oSiteCollection = new SPSite("http://Server_Name"))
{
    using(SPWeb oWebsite = oSiteCollection.OpenWeb("Website_URL"))
    {

SpList list2Col = oWebsite.Lists["List2"];
SPListItemCollection list2 = list2Col.GetItems("<Query><Where><Eq><FieldRef Name='Cust_ID' /><Value Type='Number'>"Your Customer ID From List1"</Value></Eq></Where></Query>");
List<AllDatas> myDatas = new List<AllDatas>();
      foreach(SpListItem item in list2)
{
myDatas.add(new AllDatas(item));
}

var resultWithCorrectBranch = myDatas.Where(t=>t.Branch=="something"
    }
}