2011-03-21 3 views
-2

http://img51.imageshack.us/i/linqquestion.png/après groupe par de LINQ comment obtenir des valeurs imbriquées utilisant select

Tout est dans l'image. Je veux juste arriver à l'une des valeurs en surbrillance, par exemple taille.

Code de la photo:

 var queryGroupDuplicates = from dlc in listDLC 
            from song in dlc.songs 
            group dlc by song.shortname into duplicates 
            where duplicates.Count() > 1 
            select duplicates; 
     queryGroupDuplicates.Dump(); 
+3

Veuillez coller votre code dans le cadre de la question - cela aidera tous ceux qui essaient de répondre à votre question de ne pas avoir à le taper de zéro. – BrokenGlass

Répondre

0
var queryGroupDuplicates = from dlc in listDLC 
          from song in dlc.songs 
          group dlc by song.shortname into duplicates 
          where duplicates.Count() > 1 
          select new 
          { 
          duplicatName = duplicates.Key, 
          DLCfiles = from DLCfile in duplicates 
             select new {DLCfileName = DLCfile.fileName, packName = DLCfile.packName} 
          }; 

Ce code produit ce qui est dans l'image ci-dessous: http://img846.imageshack.us/i/linqanswer.png/

MSDN - je suis arrivé idée après avoir vu, mais merci pour votre réponse rapide de toute façon.

1
queryGroupDuplicates.First().First().size 
+0

gentil, je n'avais aucune idée je pourrais le faire comme ça –

1

Vous voulez juste sélectionner les champs de tout l'un des éléments du groupe? Eh bien, votre photo montre le contenu de ce qui dans les groupes, alors choisissez l'un des éléments dans le groupe et sélectionnez les champs que vous voulez (choisissons les valeurs du premier).

var queryGroupDuplicates = 
    from dlc in listDLC 
    from song in dlc.songs 
    group dlc by song.shortname into duplicates 
    where duplicates.Count() > 1 
    let someItem = duplicates.First() 
    select new 
    { 
     someItem.fileName, 
     someItem.gameID, 
     someItem.size, 
     someItem.errorsDLC, 
     someItem.packName, 
    }; 
+0

une autre idée géniale, merci –