我需要为每个用户存储N个最近条目的列表,然后在我的asp.net应用程序中保存该数据。每个条目都是一个List(Guid,String)。
为了限制条目数,我想我需要创建一个从List派生的类来处理限制,并从列表中删除最旧的条目?
在会话开始时,将用户列表(如果存在)从数据存储加载到会话变量中?在会话结束加载列表内容什么是重新命名回数据存储?
是否有任何类型的持久性框架可以为我做一些繁重的工作?
答案 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
}