在asp.net中存储用户的N个最新条目列表?

时间:2015-08-10 15:37:20

标签: asp.net vb.net

我需要为每个用户存储N个最近条目的列表,然后在我的asp.net应用程序中保存该数据。每个条目都是一个List(Guid,String)。

为了限制条目数,我想我需要创建一个从List派生的类来处理限制,并从列表中删除最旧的条目?

在会话开始时,将用户列表(如果存在)从数据存储加载到会话变量中?在会话结束加载列表内容什么是重新命名回数据存储?

是否有任何类型的持久性框架可以为我做一些繁重的工作?

1 个答案:

答案 0 :(得分:0)

您可以创建从链接列表派生的自定义类,如下所示:

public class LimitedLinkedList<T> : LinkedList<T>
{
    public readonly int Limit;
    public LimitedLinkedList(int limit)
        : base()
    {
        Limit = limit;
    }

    public void Add(T item)
    {
        this.AddFirst(item);
        if (this.Count > Limit)
            this.RemoveLast();
    }
}

要测试它,您可以根据需要创建一个具有Guid和String的测试类

    public class Test
    {
        public Guid UserId { get; set; }
        public string UserName { get; set; }
    }

然后我们可以使用我们的列表类如下

        LimitedLinkedList<Test> list = new LimitedLinkedList<Test>(2);
        list.Add(new Test() { UserId = Guid.NewGuid(), UserName = "MN1" });
        list.Add(new Test() { UserId = Guid.NewGuid(), UserName = "MN2" });
        list.Add(new Test() { UserId = Guid.NewGuid(), UserName = "MN3" });
        list.Add(new Test() { UserId = Guid.NewGuid(), UserName = "MN4" });

        foreach (var item in list)
        {
            //Print item.UserName here
        }