0

类 Group 如下所示:

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 秒)。

我用维护的属性更改了“this.Members.Count”,即:

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 秒)

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

4

0 回答 0