Sharepoint lookup字段的关联列表查询
考虑到对lookup字段的CAML查询的模糊,在此举例验证。
1. 假设我有两个列表,薪资列表(Salary)和员工列表(Employee)。而薪资列表需要引用到员工编号,即lookup。
2. 薪资列表包含员工编号(Employee)和薪资(Salary)。

3. 员工列表包含员工编号(Employee), 员工名字(EmployeeFullName)和部门名称(EmployeeDepartment)

4. 现在我需要用CAML语句查询Salary列表, 并包含员工名字和部门,这里就需要用到列表的关联查询,具体如下:
a. 首先我用caml语句查询Salary列表。
SPQuery query = new SPQuery();
query.Query = @"
2000
";
注意:该查询语句返回的是薪资大于2000的薪资信息。
b. 然后在关联到Employee列表。
query.Joins = @"";
注意:
c. 关联Salary列表里面引用的字段
query.ProjectedFields = @"";
注意: ShowField 指定员工名字字段,Name是该字段的引用名称, 这样才能将FullName在返回结果中使用。
d. 显示需要的字段信息。
query.ViewFields = @"
5. 以下是完整代码:
SPQuery query = new SPQuery();
query.Query = @"
2000
";
query.Joins = @"
";
query.ProjectedFields = @"
";
query.ViewFields = @"
";
string str = "";
using(SPSite site = new SPSite("http://dev-sp")){
SPWeb web = site.RootWeb;
SPList list = web.Lists.TryGetList("Salary");
SPListItemCollection items = list.GetItems(query);
foreach(SPListItem item in items){
str += item["Employee"].ToString() + ":" + item["Salary"] + "-" + item["FullName"].ToString() + "\n";
}
}
Console.WriteLine(str);
Console.ReadLine();
6. 查询结果:

注意: 由于员工是lookup字段类型,所以会有字符出现,这里我没有做处理,需要的可以自行更改。