0

我正在尝试查询 Sharepoint 列表以查找用户名是否存在于列表中。我在此使用 LINQ。我试过的代码:

SPList l = web.Lists["Acknowledgements"];
var listEnumeration = l.Items.OfType<SPListItem>();
bool a = listEnumeration.Any(p => p["User"].ToString().Equals(@"SHAREPOINT\system"));

但是,即使在调试之后,布尔值也会返回 false,XML 模式显示它正在返回用户名。

<z:row xmlns:z='#RowsetSchema' 
       ows_ContentTypeId='0x0100115773AE97ADF5418FF3A1AE2F660D3E' 
       ows_User='SHAREPOINT\system' 
       ows_Acknowedgement_x0020_Date='2013-01-01 00:00:00' 
       ows_ID='17' ows_ContentType='Item' 
       ows_Modified='2013-01-01 12:24:01' 
       ows_Created='2012-12-31 14:40:51' 
       ows_Author='1073741823;#System Account' 
       ows_Editor='1073741823;#System Account' />

知道我在这方面做错了什么吗?

4

3 回答 3

1

首先,您真的不应该使用 list.Items.linq 来查找目标 ListItems。尝试将 SPQuery 与目标属性一起使用,它更快更可靠。
http://www.aidangarnish.net/post/Using-SPQuery-and-CAML-to-filter-and-order.aspx

于 2013-01-04T11:46:01.120 回答
0

p["User"].ToString()可能不是逐字返回帐户名称,而是一个“查找”值,作为字符串,看起来"1;#DOMAIN\logon"或相似。

典型地,您应该将其解析p["User"]SPFieldUserValue,但您可能只使用 usingContains而不是Equals在这种情况下。

于 2013-01-04T11:46:54.933 回答
0

尝试

SPList l = web.Lists["Acknowledgements"];
var listEnumeration = l.Items.Cast<SPListItem>();
bool a = listEnumeration.Any(p => p["User"].ToString().Equals(@"SHAREPOINT\system"));
于 2013-01-04T13:16:37.593 回答