2012-03-06 11 views
0

は確かに、私はその理由UpdateWorkflowAssociationのは、foreachの内部にあるか分からないのSharePointリストに列挙を行うが、私はそれを簡単なヘルプは高く評価されます その方法を必要とすることはできませんエラーコレクションが変更されて、私は上記のエラーを取得する理由

代わりに

foreach (SPList oList in collList) 

     `siteName = "http://xyz"; 

         newCleanupDays = 5; 
         assoCounter = 0; 
         using (wfSite = new SPSite(siteName)) 
         { 
          using (wfWeb = wfSite.OpenWeb()) 
          { 

           //wfList = wfWeb.Lists[libraryName]; 
           SPListCollection collList = wfWeb.Lists; //Open Lists 
           SPWorkflowAssociation _wfAssociation = null; 

           foreach (SPList oList in collList) 
           { 
            if (oList.WorkflowAssociations.Count > 0) 
            { 
             foreach (SPWorkflowAssociation a in oList.WorkflowAssociations) 
             { 
              if (a.Name != null || a.Name != string.Empty) 
              { 
               a.AutoCleanupDays = newCleanupDays; 
               _wfAssociation = a; 
               assoCounter++; 
              } 
              else 
              { 
               _wfAssociation = a; 
              } 

             } 
             oList.UpdateWorkflowAssociation(_wfAssociation); 
            } 

           } 
           System.Console.WriteLine("\n" + wfAssoName + ": " + assoCounter.ToString() + " workflow association(s) changed successfuly!\n"); 
          } 
         }` 

答えて

1

単に書く

foreach (SPList oList in collList.ToList()) 

このようにして、反復中にではなくではなく、コレクションを更新することができます。

+0

collListは、ToList()メソッドを持たないSPlistコレクションです。 –

+0

@mainurajkehtehai:それは必要ありません。これは 'IEnumerable 'の拡張メソッドです。一番上に 'using System.Linq;'を追加するだけです。 ( 'SPlistcollection'が' IEnumerable 'を実装していない場合は、実装を検討してください。) – Timwi

+0

@Timwiがコピーを作成し、そのリストを反復して修正するように、以下のコードで修正しました。 @Timwi:i)が(..youが おかげ '一覧 itemsEnum =新しいリストを研究ガイドのいくつかの種類を知っているより多くのIEnumerable に知っているたいと思います。 foreach(SPList oList in collList){ if(oList.WorkflowAssociations.Count> 0){ itemsEnum.Add(oList); }} foreach(itemsEnum内のSPList var){' –

関連する問題