c# - 如何转换 ASP.NET session 以取回我的列表?

标签 c# asp.net linq webmatrix

背景:我有两个网页,一个是事物的列表,一个是事物的详细信息。在列表中,用户可以过滤和排序,从而生成排序列表。在细节上,我希望用户有 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/

相关文章:

asp.net - 如何使用 ASP.NET 访问 jQuery AutoComplete extraParams

asp.net - CSS 文件被引用两次

c# - 按另一个表的 FK 过滤记录

c# - 自定义字符串格式

c# - 在 Reflection.Emit 中为动态生成的方法添加描述

c# - 通用类文件名约定

c# - 在 LINQ 中解构包含 ValueTuple 的容器

arrays - Guid 数组到字符串和返回的最快转换?

c# - "where T : somevalue"是什么意思?

c# - ASP.NET MVC AntiCrsf token 是否依赖 machinekey