2010-01-15 4 views
0

J'ai une collection d'objets TwitterCollection dans une liste. Je remplis l'objet TwitterCollection (tc) via une boucle foreach, puis j'y accède via LINQ.LINQ renvoie un nom de classe et ne donne aucune valeur

Ma classe avec ses propriétés ressemble à ceci:

//simple field definition class 
public class TwitterCollection 
{ 
    public string origURL { get; set; } 
    public string txtDesc { get; set; } 
    public string imgURL { get; set; } 
    public string userName { get; set; } 
    public string createdAt { get; set; } 
    public string realURL { get; set; } 
    public string googleTitle { get; set; } 
    public string googleDesc { get; set; } 
} 

Je vais ensuite pour le remplir avec une boucle à travers un tas de RegEx matchs dans un groupe:

var list = new List<TwitterCollection>(); 

    foreach (Match match in matches) 
    { 

     GroupCollection groups = match.Groups; 
     var tc = new TwitterCollection 
     { 
      origURL = groups[1].Value.ToString(), 
      txtDesc = res.text, 
      imgURL = res.profile_image_url, 
      userName = res.from_user_id, 
      createdAt = res.created_at, 
     }; 
     list.Add(tc); 
    } 

Enfin je suis regarder la collection avec LINQ et extraire seulement certains éléments pour l'affichage:

var counts = from URL in list 
       group URL by URL into g 
       orderby g.Count() 
       select new { myLink = g.Key, Count = g.Count() }; 

vient de tout cela est une longue liste du mot "TwitterCollection" dans count.myLink et aucun compte d'URL ...

J'avais l'habitude d'avoir tout cela fonctionne avant de passer à une liste générique. Maintenant, j'ai déménagé pour plus de commodité, ça ne marchera pas.

J'apprécierais sérieusement que quelqu'un me sorte de ma misère ici! Merci d'avance.

Répondre

2

Votre liste est de type List<TwitterCollection>, donc la variable URL est de type TwitterCollection. Donc, un TwitterCollection est ce qui est sélectionné dans g.Key (et donc myLink), et cela est rendu comme la chaîne "TwitterCollection".

Changer votre requête:

var counts = from tc in list 
      group tc by tc.origURL into g // note by tc.origURL to extract the origURL property 
      ... 

(.. On ne sait pas à partir de votre code que l'URL que vous souhaitez regrouper sur, comme TwitterCollection contient plusieurs URL que j'ai utilisé origURL comme exemple)

+0

WOOO! Merci mec!! – Alex

Questions connexes