10
votes

Est-il possible d'annuler Sélectionner et "continuer" dans. Sélectionner une déclaration sur une condition?

est-il possible de sauter la sélection de. Sélectionner la méthode dans Linq -Liquité "Continuer" en avant ..each? XXX


1 commentaires

A où avant sélectionnez ?


3 Réponses :


2
votes
var myFoos = from foo in allFoos
             let platform = LoadPlatform(foo)
             where platform != "BadPlatform"
             select LoadOwner(foo);

2 commentaires

Mais je charge des plates-formes dans la sélection.


@pencilcake - Je ne suis pas sûr de ce que vous voulez dire - votre test est contre la plate-forme que vous chargez. Comment allez-vous vérifier la condition sans le charger en premier?



1
votes

Vous pouvez faire quelque chose comme ceci:

var myFoos = allFoos
        .Select (foo => new {Platform = LoadPlatform(foo), Foo = foo})
        .Where(all => all.Platform != "BadPlatform")
        .Select(all => {
            var platform = all.Platform;//Not "BadPlatform"
            var owner = LoadOwner(all.Foo);
            // .... Som eother loads
        });


0 commentaires

4
votes

Vous devez utiliser un où code> pour filtrer les éléments que vous ne voulez pas. Cela n'est pas possible avec votre code actuel, mais il y a beaucoup de place à refactoring. Réécrivez-le comme ceci:

var myFoos = allFoos
    .Select(foo => new { Platform = LoadPlatform(foo), Foo = foo })
    .Where(o => o.Platform != "BadPlatform")
    .Select(o => new { Platform = o.Platform, Owner = LoadOwner(o.Foo), ... })
    // ...continue with your other code


0 commentaires