2016-06-10 7 views
0

ich ein Problem mit Lambda-Ausdruck habe ich habe einige releated Tabellen und ich brauche einige Ergebnisse mit Zähl- und avarage Funktionen hier ise Beispiel KlasseLambda Ausdruck select Count von virtuellen ICollection

class Course{ 
public long id; 
public string name; 
public virtual ICollection<Chapter> chapters; 
} 

class Chapter{ 
public long id; 
public virtual ICollection<Videos> videos; 
public virtual ICollection<Files> files; 
} 

i wählen müssen auszuwählen sie in

select new{ 
videoCount = [number of video releated to course], 
fileCount = [number of file releated to course], 
} 

wie kann ich auswählen, mit Lambda-Ausdruck wie

var result = from c in Courses... 
      i cant figured out here 
      select new{ 
          videoCount = [number of video releated to course], 
          fileCount = [number of file releated to course], 
      }; 

danke für Ihre Hilfe.

Blockquote

+1

Können Sie uns auch Ihre Videos und Dateien zeigen? – KRONWALLED

Antwort

0

Versuchen Sie folgendes:

var courses = new List<Course>(); 

courses.Select(x=> new { 
         VideoCount = x.Chapters.Sum(v=>v.Videos.Count), 
         FilesCount = x.Chapters.Sum(v=>v.Files.Count) 
         }); 
2

Sie haben einen Fehler im Code: nach public virtual ICollection<Chapter> Sie haben nicht die Eigenschaftsnamen. Ich nehme an, es heißt Kapitel. Gleiches gilt für die Eigenschaften von Videos und Dateien.

Try this:

var result = courses.Select(c => new 
{ 
    videoCount = c.chapters.Sum(chapter => chapter.Videos.Count()), 
    fileCount = c.chapters.Sum(chapter => chapter.Files.Count()) 
}); 

Sie Sum die Anzahl der Videos in den einzelnen Kapiteln, die Summe für den Kurs zu bekommen.