Lambda表达式从虚拟ICollection中选择Count

时间:2016-06-10 13:47:27

标签: c# asp.net asp.net-mvc entity-framework lambda

我有一个lambda表达式的问题我有一些相关的表我需要选择一些带有count和avarage函数的结果这里是示例类

add_filter ( 'wc_order_is_editable', 'majemedia_add_order_statuses_to_editable' ); 

function majemedia_add_order_statuses_to_editable () { 
    return TRUE; 
}

我需要选择它们进入

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;
}

如何选择lambda表达式,如

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

感谢您的帮助。

  

块引用

2 个答案:

答案 0 :(得分:2)

您的代码中有错误:在public virtual ICollection<Chapter>之后您没有属性名称。我认为它被称为章节。 视频和文件属性也是如此。

试试这个:

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

Sum每章中的视频数量,以获得该课程的总数。

答案 1 :(得分:0)

试试这个:

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)
                       });
相关问题