Activité LINQ to Objects
Cette rubrique s'applique à Windows Workflow Foundation 4.
Cet exemple montre comment créer une activité pour utiliser LINQ to Objects pour interroger des éléments d'une collection.
Détails de l'activité pour FindInCollection
Cette activité permet aux utilisateurs d'interroger des éléments de collections en mémoire à l'aide de LINQ to Objects. Vous devez fournir un prédicat LINQ sous la forme d'une expression lambda pour filtrer les résultats. Cette activité peut être utilisée conjointement avec des activités AddToCollection.
Le tableau suivant décrit en détail les propriétés et valeurs de retour pour l'activité.
Propriété ou valeur de retour | Description |
---|---|
Propriété |
Propriété requise qui spécifie la collection source. |
Propriété |
Propriété requise qui spécifie le filtre pour la collection sous la forme d'une expression lambda. |
Valeur de retour |
Collection filtrée. |
Exemple de code qui utilise l'activité personnalisée
L'exemple de code suivant utilise l'activité personnalisée FindInCollection
pour rechercher toutes les lignes d'une collection d'employés qui ont une propriété Role
ayant la valeur Manager
et la propriété Location
ayant la valeur Redmond
.
// Find all program managers in Redmond in the employees collection.
Activity wf = new FindInCollection<Employee>
{
Collections = new LambdaValue<IEnumerable<Employee>>(c => employees),
Predicate = new LambdaValue<Func<Employee, bool>>(c => new Func<Employee, bool>(e => e.Role.Equals("Manager") && e.Location.Equals("Redmond")))
};
Le code suivant montre comment créer un programme de workflow qui utilise l'activité FindInCollection personnalisée, AddToCollection et les activités ForEach pour remplir une collection avec des employés, rechercher tous les employés qui ont des rôles de développeur et qui se trouvent à Redmond, puis itérer au sein de la liste résultante.
// Create the Linq predicate for the find expression
Func<Employee, bool> predicate = e => e.Role == "DEV" && e.Location.Equals("Redmond");
// Create workflow program
Activity sampleWorkflow = new Sequence
{
Variables = { employees, devsFromRedmond },
Activities =
{
new Assign<IList<Employee>>
{
To = employees,
Value = new LambdaValue<IList<Employee>>(c => new List<Employee>())
},
new AddToCollection<Employee>
{
Collection = new InArgument<ICollection<Employee>>(employees),
Item = new LambdaValue<Employee>(c => new Employee(1, "Employee 1", "DEV", "Redmond"))
},
new AddToCollection<Employee>
{
Collection = new InArgument<ICollection<Employee>>(employees),
Item = new LambdaValue<Employee>(c => new Employee(2, "Employee 2", "DEV", "Redmond"))
},
new AddToCollection<Employee>
{
Collection = new InArgument<ICollection<Employee>>(employees),
Item = new LambdaValue<Employee>(c => new Employee(3, "Employee 3", "PM", "Redmond"))
},
new AddToCollection<Employee>
{
Collection = new InArgument<ICollection<Employee>>(employees),
Item = new LambdaValue<Employee>(c => new Employee(4, "Employee 4", "PM", "China"))
},
new FindInCollection<Employee>
{
Collections = new InArgument<IEnumerable<Employee>>(employees),
Predicate = new LambdaValue<Func<Employee, bool>>(c => predicate),
Result = new OutArgument<IList<Employee>>(devsFromRedmond)
},
new ForEach<Employee>
{
Values = new InArgument<IEnumerable<Employee>>(devsFromRedmond),
Body = new ActivityAction<Employee>
{
Argument = iterationVariable,
Handler = new WriteLine
{
Text = new InArgument<string>(env => iterationVariable.Get(env).ToString())
}
}
}
}
};
Pour utiliser cet exemple
À l'aide de Visual Studio 2010, ouvrez le fichier solution LinqToObjects.sln.
Pour générer la solution, appuyez sur F6.
Pour exécuter la solution, appuyez sur F5.
Remarque : |
---|
Les exemples peuvent déjà être installés sur votre ordinateur. Recherchez le répertoire (par défaut) suivant avant de continuer.
<LecteurInstall>:\WF_WCF_Samples
Si ce répertoire n'existe pas, rendez-vous sur la page (éventuellement en anglais) des exemples Windows Communication Foundation (WCF) et Windows Workflow Foundation (WF) pour .NET Framework 4 pour télécharger tous les exemples Windows Communication Foundation (WCF) et WF. Cet exemple se trouve dans le répertoire suivant.
<LecteurInstall>:\WF_WCF_Samples\WF\Scenario\ActivityLibrary\Linq\LinqToObjects
|
Voir aussi
Autres ressources
Expressions lambda (Guide de programmation C#)
LINQ to Objects