Comment puis-je définir les propriétés de tous les éléments à partir d'une requête linq avec des valeurs à partir d'un autre objet qui est également tiré à partir d'une requête?

J'ai une requête en tirant à partir d'une base de données:

List<myClass> items = new List<myClass>(from i in context
                      select new myClass
                      {
                          A = i.A,
                          B = "",    //i doesn't know this, this comes from elsewhere
                          C = i.C
                      }

J'ai aussi une autre question à faire une chose semblable:

List<myClass2> otherItems = new List<myClass2>(from j in context
                            select new myClass2
                            {
                                A = j.A,   //A is the intersection, there will only be 1 A here but many A's in items
                                B = j.B
                            }

En réalité, ces classes sont beaucoup plus grandes et des données de requête séparés non seulement par la base de données, mais par le serveur. Est-il possible d'utiliser une requête LINQ pour remplir la propriété B pour tous les items où les éléments.Une intersection? Tous les construit dans LINQ prédicats n'apparaissent que pour faire des agrégats, des sélections ou des expressions bool.

Dans mon cerveau, j'ai eu quelque chose comme cela, mais c'est hors tout:

items.Where(x => x.B = (otherItems.Where(z => z.A == x.A).Single().B));

Ou suis-je ridicule à essayer de faire ce travail dans LINQ et devrait simplement l'abandonner en faveur d'une boucle où le paramètre réel devient trivial? Étant donné les délais, je vais recourir à la boucle for (et ça va probablement finir par être beaucoup plus lisible dans le long terme, de toute façon), mais est-il possible de faire cela? Serait une extension de la méthode nécessaire pour ajouter un prédicat pour permettre cela?

Je dirais que votre boucle for est une bonne mise en œuvre.
Pourriez-vous montrer un simple jeu de données qui a la structure principale que vous recherchez? Quelle est la dernière requête en essayant d'atteindre?
La deuxième requête contient les B variable. Je suis à la recherche d'un prédicat ou d'une méthode d'extension qui va effectuer la population de la B variable dans la première collection.

OriginalL'auteur Joel Etherton | 2011-10-21