使用LINQ to SharePoint以及针对PeoplePicker的lambda表达式进行查询 - 客户端对象模型

时间:2014-02-05 18:42:15

标签: c# linq sharepoint sharepoint-2010 lambda

我有一个sharepoint 2010列表。我正在编写针对客户端对象模型的代码。

我使用CAML检索一组共享点列表项。

之后,我需要根据存储在人员选取器列中的信息过滤这些记录的子集。 (所以我只想得到结果,例如PeoplePicker设置为John Smith。)

我知道为了访问peoplepicker,必须将其声明为FieldUserValue。但是,我似乎无法在lambda表达式中做到这一点。

以下是理想情况下的工作方式。但当然这不会编译,因为我不能将“EngineerAccount”声明为lambda表达式中的FieldUserValue。

FieldUserValue usvAss = i["EngineerAccount"] as FieldUserValue;

double totalTT = collListItemAss.Where(item => item["EngineerAccount"] as FieldUserValue == usvAss.LookupValue).Sum(sItem => Convert.ToDouble(sItem["field3"]));

有什么想法吗?


对不起,这没有解决。

我有3分。

1:这部分似乎是不必要的

`item["EngineerAccount"].GetType() == typeof(FieldUserValue)

2:此代码不符合要求。此外,它在逻辑上是不正确的。 “FieldUserValue”是一个包含多个信息的复杂字段。问题是我试图将FieldUserValue与两个不同类型的字符串“等同”。

(FieldUserValue)item["EngineerAccount"] == usvAss.LookupValue

3:逻辑上,它应该是这样的,但这不起作用:

(FieldUserValue)item["EngineerAccount"].LookupValue == usvAss.LookupValue

请帮忙,我现在没有想法了!

1 个答案:

答案 0 :(得分:1)

double totalTT = collListItemAss
    .Where(item => ( (item["EngineerAccount"].GetType == typeof(FieldUserValue)) && (((FieldUserValue)(item ["EngineerAccount"])) == usvAss.LookupValue)))
    .Sum(sItem => Convert.ToDouble(sItem["field3"]));