SORU
6 EYLÜL 2011, Salı


Grup tarafından SERİ olarak

Hadi gibi bir dersimiz var olmadığını varsayalım

class Person { 
    internal int PersonID; 
    internal string car  ; 
}

Bu sınıf bir listesi var şimdi: List<Person> persons;

Şimdi bu liste birden fazla aynı PersonİDs, eski örnekleri var.

persons[0] = new Person { PersonID = 1, car = "Ferrari" }; 
persons[1] = new Person { PersonID = 1, car = "BMW"     }; 
persons[2] = new Person { PersonID = 2, car = "Audi"    }; 

PersonİD grup var; tüm arabaların listesini alabilirsiniz bir yolu var mı? Eski için. beklenen sonuç olacaktır

class Result { 
   int PersonID;
   List<string> cars; 
}

Yani gruplandırarak sonra alacağı:

results[0].PersonID = 1; 
List<string> cars = results[0].cars; 

result[1].PersonID = 2; 
List<string> cars = result[1].cars;

Şimdiye kadar yaptıklarım:

var results = from p in persons
              group p by p.PersonID into g
              select new { PersonID = g.Key, // this is where I am not sure what to do

Birisi doğru yönde bana gelin misiniz?

CEVAP
6 EYLÜL 2011, Salı


Kesinlikle - esasında istiyorum:

var results = from p in persons
              group p.car by p.PersonId into g
              select new { PersonID = g.Key, Cars = g.ToList() };

Ya da olmayan bir sorgu ifadesinde:

var results = persons.GroupBy( p => p.PersonId, 
                               p => p.car,
                               (key, g) => new { 
                                                 PersonId = key, 
                                                 Cars = g.ToList() 
                                                }
                              );

Temelde grubun içeriği IEnumerable<T> bir görünüm (zaman) ne olursa olsun değerleri (bu durumdap.car) projeksiyon verilen anahtar için mevcut bir dizidir.

GroupBy nasıl çalıştığı hakkında daha fazla bilgi için, benim 18* *bakın.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Associated Press

    Associated P

    18 EYLÜL 2006
  • bcbauer

    bcbauer

    7 ŞUBAT 2007
  • TechnoBuffalo

    TechnoBuffal

    8 HAZİRAN 2007