Expression Linq pour définir toutes les valeurs d'un tableau sur une valeur donnée
J'ai un peu de code que je voudrais transformer en une expression linq (de préférence avec des lambdas) pour le rendre plus facile à utiliser en tant que délégué. Le code ressemble à ceci:
List<DateTime[]> changes = new List<DateTime[]>();
changes = PopulateChanges();
for (int i = 0; i < changes.Count; i++)
{
for(int j = 0; j < changes[i].Length; j++)
{
changes[i][j] = DateTime.MinValue;
}
}
Pour la vie de moi, je n'arrive pas à comprendre ça. J'ai essayé d'utiliser ForEach et les diverses formes de sélection, etc.. rien ne semble fonctionner à droite.
Pour info, je sais que DateTime par défaut MinValue, en réalité, c'est la compensation les tableaux par défaut après qu'ils ont déjà été établis.
Quelqu'un peut m'aider avec un travail d'expression?
EDIT:
Je crois que je suis en train de dire ici c'est que je veux une manière concise pour définir tous les éléments d'un tableau multidimensionnel à une valeur donnée. Certes, la imbriqués pour la boucle fonctionne, et je peux certainement lieu dans une fonction (que j'ai déjà fait). Je veux juste quelque chose de plus concis qui peut être utilisé plus facilement dans un délégué sans la création d'un multi-ligne monstre.
source d'informationauteur Erik Funkenbusch | 2009-09-11
Vous devez vous connecter pour publier un commentaire.
Cela devrait faire l'affaire.
Ce n'est pas LINQ, et ce n'est pas vraiment très différent de votre imbriquée
for
boucles, juste un peu moins verbeux.Il y a certainement les moyens de (ab)utiliser LINQ pour obtenir les mêmes résultats, mais je voudrais examiner à être sale hacks. En outre, le LINQ équivalent ne serait probablement pas être moins bavarde que mon exemple ci-dessus.
Une question intéressante, mais Linq est d'environ interrogation et ce que vous faites ici ne ressemble pas à une requête pour moi. Même si il y a une solution, je ne suis pas certain que j'allais utiliser Linq pour quelque chose comme ça.
LINQ n'est pas vraiment destiné à être utilisé pour la mise à jour des collections.
C'est à propos de l'interrogation, c'est à dire créer enumerables sur les collections existantes.
Je pense que ton code est parfaitement lisible et n'améliorera pas beaucoup si vous forcer à avoir beaucoup de lambdas et.
Si vous souhaitez créer un nouveau
List<DateTime[]>
avec chaque élément défini sur une valeur, vous pouvez le faire:Si vous vraiment voulez le faire à l'aide de
ForEach
/LINQ, il est possible de l'abus deSelect
(mais je ne le recommande pas):Pouvez-vous décrire quelques cas d'utilisation de la façon dont vous vous proposez d'utiliser le dit déléguer?
Je veux dire, si PopulateChanges() retourne une Liste<> DateTime tableaux, et que vous allez à travers chacun d'eux, et d'en DateTime.MinValue, ce qui est exactement le code de l'unité que vous voulez mettre dans le déléguer?
Il y a toujours des meilleures pratiques et que telle, mais je ne sais pas si je suis d'accord avec tout ce que tout le monde a dit...
Si je vous comprends bien, vous devez énumérer votre tableau imbriqué pour plusieurs raisons différentes, et tiens à encapsuler cette fonctionnalité pour être réutilisés.. Il y a différentes façons de le faire, mais en voici un à l'aide de linq et une avec...
Je voudrais faire de cette façon...
cela vous permettra de le réutiliser et de faire des choses différentes pour chaque élément. ex.
ce serait utilisée pour la chose qui doit être faite pour chaque date, le temps, par opposition à la chose fait à chaque date heure... ce serait un peu différent.