2009-12-08 3 views
70

Quelle est la correction nécessaire pour exemple 2 afinde au groupe par plusieurs colonnesGroupe LINQ Par champs multiples -syntax aide

Exemple 1

var query = from cm in cust 
      group cm by new { cm.Customer, cm.OrderDate } into cms 
      select 
      new 
      { Key1 = cms.Key.Customer,Key2=cms.Key.OrderDate,Count=cms.Count() }; 

Exemple 2 (incorrect)

var qry = 
    cust.GroupBy(p => p.Customer, q => q.OrderDate, (k1, k2, group) => 
    new { Key1 = k1, Key2 = k2, Count = group.Count() }); 

Répondre

127

Utiliser le même type anonyme dans th notation e point que vous faites dans l'expression de requête:

var qry = cust.GroupBy(cm => new { cm.Customer, cm.OrderDate }, 
      (key, group) => new { Key1 = key.Customer, Key2 = key.OrderDate, 
            Count = group.Count() }); 

(Dans un vrai IDE faudrait que je (key, group) alignés sous le paramètre cm, mais il envelopper dans SO.)

+0

Jon, je suis toujours en train de commettre une erreur sur l'utilisation de la méthode d'extension, y a-t-il un moyen facile de se familiariser avec? – Udana

+0

@Udana: J'ai trouvé très utile de regarder ce que le compilateur C# fait avec les expressions de requête - mais je suis un gars basé sur les spécifications. Regarder les surcharges disponibles et lire la documentation aide aussi beaucoup :) –

+0

@Jon Skeet: Cette surcharge de 'GroupBy()' n'a pas beaucoup de description dans MSDN. Pouvez-vous s'il vous plaît écrire une ligne à ce sujet? – FMFF