2010-05-26 3 views
1

La plupart des exemples que j'ai trouvés concernent Linq pour les entités, ce qui n'est pas ce dont j'ai besoin. J'ai un DataTable standard que j'ai besoin de modifier avant de retourner à l'appelant. Je peux parcourir la collection Table.Rows normale ou quelque chose comme ça avec les nouvelles méthodes d'extension:Mise à jour des tables avec des expressions Linq

foreach (var x in table.AsEnumerable()) { 
    if (x.Field<int>("SomeField") > SomeValue) 
     x.SetField<string>("OtherField", "OtherValue"); 
} 

Mais je suis toujours en boucle manuellement à travers toute la collection de la ligne. Pas forcément un gros problème, mais je me demande s'il existe une façon plus élégante d'accomplir cela avec Linq, en ce sens que j'ai besoin de créer une expression qui réponde aux résultats d'une requête et qui effectue une action arbitraire plutôt que Sélectionnez simplement les éléments du conteneur en cours d'énumération.

Répondre

1

Je pense que ce que vous vous demandez est s'il y a une sorte de méthode d'extension comme

stuff.ForEach(x => x.Value = "new value"); 

Malheureusement, il n'y a pas une telle chose. Quand j'ai commencé à utiliser LINQ to SQL, je voulais la même chose. Mais malheureusement, vous devez utiliser une boucle for.

+0

On dirait que vous obtenez le prix 'tumbleweed', s'il y en a un: D Merci pour le commentaire ... ouais, je pensais qu'il n'y avait aucun moyen de le faire, mais mon Linq-fu était un peu plus faible . – kprobst

+0

Ha! Je viens de réaliser que cela a été demandé il y a presque un an. Et MS n'a toujours pas implémenté la méthode ForEach. – mikesigs

Questions connexes