使用linq和entity向列表添加新列

本文关键字:列表 添加 新列 entity linq 使用 | 更新日期: 2023-09-27 18:11:24

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

这是我的查询

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

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

我张贴我的流程获取数据和数据绑定到网格

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

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

在第三步,从我的观点我给我的webgrid的源属性列表在我的模型中持有的数据

使用linq和entity向列表添加新列

如果您想对结果进行分页和索引。试试这个:

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

我建议您使用SkipTake

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

这将消除对"索引"列的需要。这是一件好事,因为您不能将列/属性添加到类型中,而仍然具有相同的类型。

。如果你想返回一个List<Details>,你必须将属性Id添加到类型Details

对于一些文档

  • 跳过MSDN
  • 接管MSDN