CAML クエリ ビルダーを使用しているときに動作するクエリがありますが、SharePoint Web パーツの C# で使用すると、常に結果が返されません。
using (SPWeb ThisWeb = ThisSite.OpenWeb())
{
IList<Tweet> Tweets = GetTweets(item["Mode"].ToString(), item["String"].ToString(), LastTweet, ThisSite);
SPList ThisList = ThisWeb.Lists.TryGetList(Variables.TwitterTweetList);
foreach (var tweet in Tweets)
{
SPListItemCollection itms = ThisList.GetItems(new SPQuery() { Query = @"<Where>" +
"<Eq>" +
"<FieldRef Name=""Title"" />" +
"<Value type=""Text"">" + tweet.tweetID.ToString() + "</Value>" +
"</Eq>" +
"</Where>"
});
if (itms.Count == 0)
{
// add the tweet to 'ThisList'
}
}
}
コードに足を踏み入れると、tweet.tweetID.ToString() が "337958304577892353" であることがわかります。
このコードを実行すると、ゼロ項目が返されます。
U2U ビルダーまたはその他の CAML クエリでクエリを実行すると、1 が返されます (コードが複数回実行された場合は 2、3、4 など)。
U2U ビルダーで実行されたクエリ:
<Query>
<Where>
<Eq>
<FieldRef Name="Title" />
<Value type="Text">"337958304577892353"</Value>
</Eq>
</Where>
</Query>
(はい、SharePoint で CAML を実行するときは、タグを削除します... うまく機能するクエリが他に 3 つあります。これは 1 つだけです。)