我有一个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
请帮忙,我现在没有想法了!
答案 0 :(得分:1)
double totalTT = collListItemAss
.Where(item => ( (item["EngineerAccount"].GetType == typeof(FieldUserValue)) && (((FieldUserValue)(item ["EngineerAccount"])) == usvAss.LookupValue)))
.Sum(sItem => Convert.ToDouble(sItem["field3"]));