背景:我有两个网页,一个是事物的列表,一个是事物的详细信息。在列表中,用户可以过滤和排序,从而生成排序列表。在细节上,我希望用户有 Next 和 Previous 导航。
我正在使用带有 Razor 的 ASP.Net 网页,使用 WebMatrix 或 Visual Studio 进行编辑。列表页面的代码很简单。 RefID是一个整型Key,唯一标识记录:
var db = Database.Open("dbname");
...
var q = db.Query( sqlthatworks , passInVarables);
Session["WorkingList"] = q.Select( x => new { x.RefID } );
在详细信息页面上,我需要能够访问 Session["WorkingList"],以便我可以使用此 StackOverFLow 问题提供的 Linq find the next and previous records ,这将是这样的:
var workingList = (IEnumerable<dynamic>) Session["WorkingList"];
var nextRecord = workingList.SkipWhile(i => i.RefID != currentRecord).Skip(1).First();
我知道db.Query returns a IEnumerable< Object> ,但我猜真正返回的是一个 IEnumerable
最佳答案
最好为 RefID
值创建一个类。这将允许您这样做:
public class RefContainer {
// maybe RefID is not an int...?
public Int32 RefID { get; set; }
}
Session["WorkingList"] = q.Select(x => new RefContainer { RefID = x.RefID });
var workingList = Session["WorkingList"] as IEnumerable<RefContainer>;
if (workingList != null) {
var nextRecord = workingList
.SkipWhile(i => i.RefID != currentRecord)
.Skip(1).First();
}
关于c# - 如何转换 ASP.NET session 以取回我的列表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8490435/