2009-09-03 4 views
1

SharePointでは、特定のListまたはListItemが操作を実行する前に存在するかどうかを確認できますが、単純にArgumentExceptionをキャッチしない限り、これを行う方法はないようです。確かに良い方法がありますか?try/catchブロックなしでSPListまたはSPListItemの存在を確認する方法はありますか?

+0

を書くことと同じですListItemが存在するかどうかを確認しますか?私はあなたがSPListItemCollectionからSPListItemを取得する状況を考えることしかできません。それが存在することは分かっています。 –

+0

SPListの場合、それは基本的なエラー処理です(リストが誤って削除される可能性があります。 SPListItemについては、他のユーザが正当な理由で削除できる項目に対して何らかの処理を施すような処理である。 –

答えて

4

あなたはLINQのソリューションを使用することができSPListのインスタンスを検索するには:

FirstOrDefaultがトリックですSPListItemのインスタンスを見つけるため

SPList instance = (from SPList list in web.Lists 
        where list.RootFolder.Name.Equals(name) 
        select list).FirstOrDefault(); 

if (instance != null) 
{ 
...// process 

同様のソリューションを作ることができます。デフォルトはnullです(例外ではありません)。

UPDATE:コメントとして

、このコード行:

from SPList list in web.Lists 

はあなたがいないだろうというときの例を与えることができ

from list in web.List.Cast<SPList> 
+0

web.Lists(SPListCollection)はIEnumerableではないため、上のコードはそのまま動作しません。 "web.Lists.Cast ()のSPListリストから..."どこでも動作します。これを含めるように回答を更新して、それをAccepted Solutionとしてマークしますか? ありがとう! –

+0

私の経験では、 "web.ListのSPListリストから"というコードは、 "web.List.Castのリストから" "を書き込むのと同じです。このような型(SPList)を明示的にインクルードするときは、キャストの呼び出しは、あなたが言ったようにSPListCollectionがIEnumerable を実装していないため、実際に行う必要があります。あなたが実際に列挙するコレクションがIEnumerable を実装している場合は、型を含めるべきではありません。なぜなら、キャストを呼び出す必要がないか、キャストする必要があるからです。

+0

次に確認する必要があります。 - その行は .Lists.Cast ()...) ? –

関連する問題