计算性能问题

时间:2013-09-10 20:07:58

标签: performance linq count

班级组如下:

class Group {
    public string Name { get; set; }
    public virtual ICollection<Person> Members { get; set; }

    public dynamic AsJson() {
        return new
        {
            groupId = this.GroupId,
            name = this.Name,
            membersCount = this.Members.Count // issue!
        };
    }
}

我有一个列出所有组的视图,如下所示:

Group name      Members
 Bleh             15
 Zort             40
 Narf             12

使用AJAX调用检索此列表,该调用返回JSON。该操作的代码如下:

            groups = from g in (db.Groups where ... orderby g.Name).ToList()
                     select g.AsJson();

问题是这个列表花了太长时间(比如20秒)。

我改变了#34; this.Members.Count&#34;具有维护属性,即:

class Group {
    public string Name { get; set; }
    public virtual ICollection<Person> Members { get; set; }
    public int MembersCount { get; set; }  // added

    public dynamic AsJson() {
        return new
        {
            groupId = this.GroupId,
            name = this.Name,
            membersCount = this.MembersCount // changed
        };
    }
}

它开始工作正常(1-2秒生成列表)

有没有更好的方法来实现这一目标?我开始在维护属性MembersCount时遇到问题,因为在代码的几个部分中添加和删除了成员

0 个答案:

没有答案