2009-03-09 5 views
2

私はSPListItemCollectionを持っています。ランダムな項目を1つ指定してSPListItemCollectionを返します。

私は基本的にコレクション内のアイテムの1つを(ランダムに)取得して返したいと思っています。

私のメソッドにはSPListItemCollectionが必要な戻り値の型があります。そのため、SPListItemCollectionに1つの項目しかなく、返すことは気になりません。それ

で、この1つの項目でSPListItemCollectionを返す方法

イムわからない私はこれをどのように行うことができますか?

答えて

2

再読み込み時に、SPListItemCollectionを1つのアイテムに減らしたいようですが、ここではSPListItemCollectionを取得する方法がありますリストから直接1つのランダムな項目で:

private SPListItemCollection GetRandomItem(SPList list) 
{ 
    Random random = new Random(); 
    int index = random.Next(0, list.ItemCount - 1); 
    SPQuery query = new SPQuery(); 
    query.Query = string.Format("<Where><Eq><FieldRef Name=\"ID\" /><Value Type=\"Integer\">{0}</Value></Eq></Where>", index); 
    return list.GetItems(query); 
} 
+0

これはベストアンサーになるはずです。ランダム番号を使用してアイテムIDを取得し、上記の方法を使用して希望の結果を取得してください – Kusek

+0

'FieldRef' IDは常に0からCountですか? – haknick

0

コレクション内の任意のアイテムを選択してください。 Seed a Randオブジェクトを作成し、乱数を取得する場合は、配列の境界を使用してランダムオブジェクト(0、spListItemCollection.Count)の境界を定義します。

このアイテムを新しいSPListItemCollectionにラップして返します。

+0

私は問題を引き起こしている新しいSPListItemCollectionに項目をラップします。私はランダムにアイテムを持っています...しかし、次の部分を行う方法は分かりません – raklos

+0

新しいSPListItemCollectionを作成することはできません – Kusek

2

私はあなたが返すようにしたいコレクションに項目を追加する必要があると思います、あなたは(更新を呼び出す必要があります)

SPListItemCollection collListItemsDest; //collection to return 
SPListItem oListDest = collListItemsDest.Add(); //add item to collection 
oListDest["Field1_Name"] = "RANDOM"; //random item you retrieved 
oListDest.Update(); 

次に、あなたは、本当にcollListItemsDest
MSDN - SPListItemCollection add()

を返すことができますが、コレクションではなくアイテムだけを返すことを考えなければなりません。唯一のアイテムがあることが分かっている場合は、コレクションを返す必要はありません。

関連する問題