使用linq和entity添加一个新列到列表?

时间:2013-04-29 10:55:58

标签: c# linq entity-framework

我想在我的列表中添加一个新列'Id',我正在使用Linq和实体框架从数据库中检索数据,我有12行,我需要添加一个新列“Id”,它应该从基于我从数据库获得的行数,1到12应该从1开始增加id

这是我的查询

var Details = db.Details.Include(p => p.Name).Include(p => p.Gender);

问题在于,我还在为我的网格实现分页,当我再次点击下一页时,行号是从sno 1生成的,当我的第1页包含第1行到第5行的记录时,我的第2行行号应该从第6行开始,但我的第2行行号再次从第1行开始。

我发布了获取数据并将数据绑定到网格的流程

在第一步中我有我的模型User.cs,它与数据库交互并获取数据并将数据存储在List<>

在下一步中,从我的控制器操作方法中调用我的模型User.cs中的方法,该方法将从数据库中获取数据并将其存储在List<>

在第3步中,从我的视图中我将webgrid的source属性赋予我的模型中包含数据的列表

2 个答案:

答案 0 :(得分:0)

我建议您使用SkipTake

public List<Details> GetDetails(int page, DbContext db)
{
   const int pageSize = 5;
   db.Details.Skip( (page*pageSize) ).Take(pageSize).ToList();
}

这将消除对“索引”列的需要。这是一件好事,因为您无法向类型添加列/属性,并且仍然具有相同的类型。

e.g。如果您想要返回List<Details>,则必须将属性Id添加到Details类型。

对于某些文档

答案 1 :(得分:0)

如果您要同时进行分页和索引结果。试试这个:

var Details = db.Details.Skip(page*pageSize)
                        .Take(pageSize)
                        .ToList()
                        .Select((p,i)=> new {Id = i,Detail = p});