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"));

しかし、これをデバッグした後、XMLスキーマはユーザー名を返していることを示していますが、boolはfalseを返しています。

<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

まず、目的の ListItems を見つけるために list.Items.linq を使用しないでください。ターゲット プロパティで SPQuery を使用してみてください。はるかに高速で信頼性があります。
http://www.aidangarnish.net/post/Using-SPQuery-and-CAML-to-filter-and-order.aspx

于 2013-01-04T11:46:01.120 に答える
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 に答える
0

p["User"].ToString()おそらく、アカウント名を逐語的に返すのではなく、文字列として似たような「ルックアップ」値を返します"1;#DOMAIN\logon"

正規には、p["User"]として解析する必要がありますが、この場合ではなく、SPFieldUserValueを使用するだけで済む可能性があります。ContainsEquals

于 2013-01-04T11:46:54.933 に答える