2010-05-20 14 views
2

J'utilise la classe suivanteliste des groupes et SubGroup

class Country 
{ 
    int CtryID {get; set;} 
    List<City> city {get; set;} 
} 

class City 
{ 
    string county {get; set;}  
    int sqkm {get; set;} 
} 

Le CtryID a des valeurs comme 1,2,3 et le comté a des valeurs comme « le comté de 1 », « 2 du comté » et ainsi de suite

Je veux un tel résultat

1 
    County 1 
    County 6 
    County 3 
2 
    County 9 
    County 4 
    County 2 

Comment puis-je obtenir cette aide d'une requête Lambda?

C'est ce que j'ai utilisé. La liste est appelée ListA

var lst = from aa in ListA 
        from cny in aa.ctryid 
        select new 
        { 
         CountryID= aa.CtryID, 
         CountyName= cny.County 
        }; 

Requête 2: Toujours dans ma deuxième requête (séparée de première) Je veux orderBy le pays et chaque ville à l'intérieur du pays, sans répéter les plusieurs fois par pays pour chaque Ville?

+0

? C'était juste le résultat attendu. Je demande comment y parvenir en utilisant une requête LINQ – Gokul

+0

Je vais vous expliquer: en supposant que vous avez une «Liste » - chaque pays a une «Liste ». Si vous parcourez les Pays et les imprimez un par un, vous obtenez la sortie souhaitée. Vous n'avez pas besoin d'une requête ou de manipuler les données - vous stockez déjà les données comme vous le souhaitez. – Kobi

+0

Malheureusement, ce n'est pas ce que je reçois. Quand j'imprime, le CtryID est imprimé pour chaque comté ... ce n'est pas ce qui est nécessaire aussi clair dans ma sortie attendue – Gokul

Répondre

0
var countryGroups = (from aa in ListA 
        from cny in aa.ctryid 
        select new 
        { 
         CountryID= aa.CtryID, 
         CountyName= cny.County 
        }).GroupBy(n => n.CountryID); 

Ce groupera vos résultats par CountryID, mais la sortie ne sera pas une liste - ce sont les groupements.

Pour générer, passez en revue le countryGroups et, dans chacun d'entre eux, parcourez les objets CountyName.

Questions connexes