2009-12-08 12 views
70

Qual è la correzione necessaria per esempio 2 simmetrico al gruppo a più colonneLINQ Gruppo Di più campi -Syntax aiutare

Esempio 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() }; 

Esempio 2 (corretto)

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

risposta

127

Utilizzare lo stesso tipo anonimo in e la notazione del punto che si fa nell'espressione di query:

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

(In un vero e proprio IDE avrei (key, group) in fila sotto il parametro cm, ma allora sarebbe avvolgere in SO.)

+0

Jon, mi commetto errori durante l'utilizzo del metodo di estensione, c'è un modo semplice per conoscerlo? – Udana

+0

@Udana: Ho trovato molto utile guardare a ciò che il compilatore C# fa con le espressioni di query - ma io sono un ragazzo basato sulle specifiche. Osservare i sovraccarichi disponibili e leggere la documentazione aiuta molto :) –

+0

@Jon Skeet: Questo overload di 'GroupBy()' non ha una descrizione molto ampia in MSDN. Puoi scrivere una riga per favore? – FMFF