2011-10-21 15 views
5

Korkunç unvan için özür dilerim, sorunumu nasıl ifade edeceğimi tam olarak bilmiyordum. Bu gerçekten bir alışveriş sepeti/Müşteri şeylerle uğraşmaz ama fikir olduğu içinLINQ Gruplandırma Verileri İkili

CustAcct cust = new CustAcct(); 
cust.Name = "John Doe"; 
cust.Account = "ABC123"; 
cust.OrderTotal = 123.43 
cust.OrderQty = 4; 
cust.TransDate = "12/26/2010 13:00" 

sonraki kısmını eleştiren çok fazla zaman harcamak etmeyin:

ben gibi görünen bir nesne var Aynı zamanda, herkesin oldukça tanıdık olduğu bir şeyi kullanmak istedim.

Bir hesapta birden fazla müşteri olabilir ve bir müşteri birden fazla hesaba sahip olabilir. Yani

sahip:

Account Customer OrderTotal OrderQty 
ABC123  John Doe 155.55   6 
ABC321  John Doe  97.94   4 
ABC123  Jane Zoe  79.10   3 
ABC321  Jane Zoe 142.99   7 

I: my çıkış gibi görünecektir yüzden yapmak istiyorum ne

List<CustAcct> custList = new List<CustAcct>(); 
custList.Add("John Doe", "ABC123", 123.43, 4, "12/26/2010 13:00"); 
custList.Add("John Doe", "ABC123", 32.12, 2, "12/27/2010 10:00"); 
custList.Add("John Doe", "ABC321", 43.34, 1, "12/28/2010 15:00"); 
custList.Add("John Doe", "ABC321", 54.60, 3, "12/28/2010 16:00"); 
custList.Add("Jane Zoe", "ABC123", 46.45, 2, "12/28/2010 17:00"); 
custList.Add("Jane Zoe", "ABC123", 32.65, 1, "12/29/2010 12:00"); 
custList.Add("Jane Zoe", "ABC321", 67.65, 3, "12/29/2010 23:00"); 
custList.Add("Jane Zoe", "ABC321", 75.34, 4, "12/30/2010 08:00"); 

her Hesap ve Müşteri için tüm OrderTotal ve OrderQty toplamını olsun LINQ'tan Objects kitabına ve 101 LINQ Örnekleri'mden geçtim ve bunu nasıl elde edeceğimi anlayamıyorum. Teşekkürler. Böyle Sen grubu ve toplamı can

+0

Yöntem sözdizimini mi yoksa sorgu sözdizimini mi kullanıyorsunuz? –

+0

Sorgu sözdizimini kullanıyorum. CustList'te c ... – Stephen

+0

Hesapla/müşteri birleştirme ile gruplamak ister misiniz? Ya da müşteri tarafından sadece grup, sonra hesap? İnce fark, ama benim yanıtı etkiler ... –

cevap

9

:

from ca in custList 
group ca by new { ca.Name, ca.Account } into g 
select new { 
    g.Key.Account, 
    g.Key.Name, 
    OrderTotal = g.Sum(o => o.OrderTotal), 
    OrderQty = g.Sum(o => o.OrderQty) 
}; 

See it in action.

+0

Teşekkür ederim. Bu mükemmel çalıştı. – Stephen

İlgili konular