Ben allStudents = Dictionary<ClassRoom, List<Student>>()
Linq yılındaC# linq
nasıl erkek tüm öğrencilerin bir listesini alacağı bir nesne var? Tüm sınıflardan (student.Gender == "m")? Ian
Ben allStudents = Dictionary<ClassRoom, List<Student>>()
Linq yılındaC# linq
nasıl erkek tüm öğrencilerin bir listesini alacağı bir nesne var? Tüm sınıflardan (student.Gender == "m")? Ian
Buna hile SelectMany
operasyon
var maleStudents = allStudents
.SelectMany(x => x.Values)
.Where(x => x.Gender=="m");
olduğunu aşağıdakiler deneyin. List<Student>
koleksiyonunu tek bir Student
koleksiyonuna düzleştirme etkisine sahiptir. Ortaya çıkan liste, her bir listeyi arkaya dizilmiş olsaydınız aynıdır.
Bu btw, Tomas'ın önerdiği – vittore
'dan daha hızlı çalışacaktır Evet, C# derleyici sorgusu biraz daha karmaşık kodlara çevirir, fakat farkın o kadar olacağını düşünmüyorum Makul bir senaryoda madde. Daha okunaklı görünen bir çözüm seçmek daha önemlidir (ki bu kişisel bir fikirdir). –
Yuvalanmış from
maddesini kullanabilirsiniz. İlk from
, öğrencileri ile birlikte tüm sınıfları (sözlükten bir öğe) KeyValuePair<ClassRoom, List<Student>>
olarak temsil eder. Sonra Value
özelliğini kullanarak sınıftan tüm öğrencileri seçmek ve bunları filtreleyebilirsiniz:
var q = from cls in allStudents
from s in cls.Value
where s.Gender == "M" select s;
kapağın altında, iç içe from
fıkra SelectMany
yöntem çağrısına çevrilmiştir.
@phsr fark etmez mi? – baron
Yığın akışında birçok ödev sorusu var. Sadece uygun şekilde etiketleyin. (Her halükârda bunun olduğunu sanmıyorum.) – harpo
Bu nesneleri, evrensel olarak anlaşılacakları gibi kullandım. Gerçek iş nesneleri genel kullanıcılar tarafından bilinemezdi. Yıllar önce ev ödevi yapmak için toooo mezun oldum;) –