Freigeben über


Auflistungsaktivitäten in WF

Dieses Thema gilt für Windows Workflow Foundation 4.

Auflistungsaktivitäten werden für die Arbeit mit Auflistungsobjekten in einem Workflow verwendet. .NET Framework, Version 4 verfügt über vom System bereitgestellte Aktivitäten, mit denen Elemente zu einer Auflistung hinzugefügt oder daraus entfernt werden können und mit denen überprüft werden kann, ob ein Element in einer Auflistung vorhanden ist. Außerdem können Auflistungen bereinigt werden. Alle Auflistungsaktivitäten sind generische Klassen, die von CodeActivity oder CodeActivity erben. ExistsInCollection und RemoveFromCollection verfügen über ein OutArgument-Objekt des Typs Boolean, das das Ergebnis angibt.

Ee358729.Important(de-de,VS.100).gif Hinweis:
Wenn eine Auflistungsaktivität vor dem Festlegen des zugrunde liegenden Auflistungsobjekts ausgeführt wird, wird eine InvalidOperationException ausgelöst, und die Aktivität ist fehlerhaft.

Auflistungsaktivitäten

AddToCollection

Fügt einer angegebenen Auflistung ein Element hinzu.

ClearCollection

Entfernt alle Elemente aus einer angegebenen Auflistung.

ExistsInCollection

Gibt true zurück, wenn ein Element in einer Auflistung vorhanden ist.

RemoveFromCollection

Entfernt ein Element aus einer angegebenen Auflistung und gibt true zurück, wenn das Element erfolgreich entfernt wurde.

Verwenden von Auflistungsaktivitäten

Im folgenden Codebeispiel wird die Arbeit mit einer Auflistung erläutert, die als Workflowvariable deklariert wurde. Die verwendete Auflistung ist ein List’1-Objekt von String-Objekten mit dem Namen fruitList.

Variable<ICollection<string>> fruitList = new Variable<ICollection<string>>
{
Default = new List<string>
      {
          "Apple",
          "Orange",
      },
      Name = "FruitList",
};

Variable<bool> result = new Variable<bool>
{
      Name = "Result",
}

Sequence seq1 = new Sequence
{
    Variables = { fruitList, result },

    Activities = 
    {
        new If
        {
        Condition = new ExistsInCollection<string>
            {
                Collection = fruitList,
                Item = "Pear",
            },
            Then = new AddToCollection<string>
            {
                Collection = fruitList,
                Item = "Pear",
            },
            Else = new RemoveFromCollection<string>
            {
               Collection = fruitList,
               Item = “Apple”,
            },

        new RemoveFromCollection<string>
        {
            Collection = fruitList,
            Item = "Apple",
            Result = result,
        },
        new If
        {
            Condition = result,
            Then = new ClearCollection<string>
            {
                Collection = fruitList,
            }
        }
    }
 };
<Sequence xmlns="https://schemas.microsoft.com/netfx/2009/xaml/activities" xmlns:scg="clr-namespace:System.Collections.Generic;assembly=mscorlib" xmlns:x="https://schemas.microsoft.com/winfx/2006/xaml">
  <Sequence.Variables>
    <Variable x:TypeArguments="scg:ICollection(x:String)" Name="FruitList">
      <Variable.Default>
        <Literal x:TypeArguments="scg:ICollection(x:String)" Result="{x:Null}">
          <scg:List x:TypeArguments="x:String" Capacity="4">
            <x:String>Orange</x:String>
          </scg:List>
        </Literal>
      </Variable.Default>
    </Variable>
    <Variable x:TypeArguments="x:Boolean" Name="Result" />
  </Sequence.Variables>
  <If>
    <If.Condition>
      <InArgument x:TypeArguments="x:Boolean">
        <ExistsInCollection x:TypeArguments="x:String" Item="Pear" Result="{x:Null}">[FruitList]</ExistsInCollection>
      </InArgument>
    </If.Condition>
    <If.Else>
     <RemoveFromCollection x:TypeArguments="x:String" Item="Apple" Result="{x:Null}">[FruitList]</RemoveFromCollection>
    </If.Else>
    <If.Then>
      <AddToCollection x:TypeArguments="x:String" Item="Pear">[FruitList]</AddToCollection>
    </If.Then>
  </If>
  <RemoveFromCollection x:TypeArguments="x:String" Item="Apple" Result="[Result]">[FruitList]</RemoveFromCollection>
  <If Condition="[Result]">
    <If.Then>
      <ClearCollection x:TypeArguments="x:String">[FruitList]</ClearCollection>
    </If.Then>
  </If>
</Sequence>