2012-05-21 2 views
1

Je dois fusionner 2 liste en une liste basée sur un champ dans la liste deux, puis accéder aux informations dans la liste fusionnée.Stocker et accéder à une liste dans une liste

Exemple de code pseudo

List1.merge; 
List2.merge2; 
MergedList = List1.merge join List2.merge2; 
MergedList.Merge2 or MergedList.Any Field in List 
+0

Fournissez des informations sur les listes et votre objectif de fusion, au moins un exemple simple. –

+0

Par fusion, voulez-vous dire que vous voulez énumérer deux listes en parallèle et sélectionner un seul nouvel élément qui combine les propriétés des deux types d'éléments de liste? Si c'est le cas, il existe une [méthode d'extension Zip] (http://msdn.microsoft.com/fr-fr/library/dd267698.aspx) qui peut vous y aider. –

+0

Actuellement, j'ai deux listes à venir. Chaque liste avec des champs et des données à l'intérieur. Je dois fusionner les deux listes en fonction d'un seul champ. Une fois fusionné dans une seule liste, je dois alors pouvoir accéder aux champs et aux données de la liste. – Justin

Répondre

0

Qu'en est-Concat?

var myList = list1 
    .Where(l => list2 
     .Any(l2 => l2.Field == l.Field) 
    .Concat(list2 
     .Where(l2 => list 
      .Any(l => l.Field == l2.Field)) 
    .ToList(); 
+0

De quelle bibliothèque ai-je besoin pour utiliser Concat? Je ne peux pas l'obtenir pour apparaître dans le menu automatique complet quand je tape dans le point. – Justin

+0

Il suffit d'ajouter 'using System.Linq' en haut de votre fichier et vous devriez être bien :) – mattytommo

+0

je l'ai dans mon application console et toujours pas de chance – Justin

0

Voici un exemple de base que vous devriez être en mesure de régler pour vous besoin:

using System.Linq; // Add these two lines to the using statements 
        // at the top of your file 
using System.Collections.Generic; 

var l1 = new List<Uri>() { new Uri("http://www.facebook.com"), new Uri("http://www.yahoo.com"), new Uri("http://www.google.com") }; 
var l2 = new List<Uri>() { new Uri("http://www.google.com"), new Uri("http://www.nytimes.com"), new Uri("http://www.facebook.com") }; 

var q = from Uri uri1 in l1 
     join Uri uri2 in l2 on uri1.Host equals uri2.Host select uri2; 

var commonUris = q.ToList(); // Result 

La ligne critique est celui autour equals

Soyez conscient que cela pourrait ne pas produire la résultat attendu si un élément apparaît plus d'une fois dans l'une des listes. Que diriez-vous d'une simple jointure lambda?

0

list1.Join(list2, l1 => l1.Field, l2 => l2.field, (l1,l2) => new SomeORAnonymousObjectType { ListItem1 = l1, ListItemType2 = l2 }).ToArray().ToList().ToEnumerable(); 
0

Ce problème est maintenant résolu. J'ai créé une liste qui faisait référence à une classe, qui stockait mes informations, et une fois cela fait, je pouvais gérer et accéder à tout ce dont j'avais besoin.

Questions connexes