如何在 ASP.NET Core Web API 中使用 LINQ 仅从数据库中获取最新的 id?
Posted
技术标签:
【中文标题】如何在 ASP.NET Core Web API 中使用 LINQ 仅从数据库中获取最新的 id?【英文标题】:How to get latest id only from database using LINQ in ASP.NET Core Web API? 【发布时间】:2020-12-13 03:30:46 【问题描述】:Id | StName | Subject |
1 | Tom | Math |
2 | Jerry | Science |
我是 LINQ 的新手,我试图使用 LINQ 从数据库中仅获取 Id
的 StName
Jerry,但我做不到。
[HttpGet]
public IEnumerable<StudentModel> GetStudentId()
var id = _context.StudentModel.OrderBy(a => a.Id).ToList();
return(id);
但我得到了所有数据。我想获取最新记录的id(只有id)。
【问题讨论】:
我要获取新记录的id(只有id) 是的,它只会返回一个Id
。看看,让我知道它是否按预期工作。
【参考方案1】:
现在,您正在获取数据库表中所有 条记录的列表。您只需要 第一个按 ID 按降序排列。
[HttpGet]
public int GetStudentId()
var latestStudentRecord = _context.StudentModel
.OrderByDescending(a => a.Id)
.First();
// return only the Id property of the latest record
return latestStudentRecord.Id;
请注意,这仅在您的 Id 是连续的情况下才有效,并且保证“最新”记录将始终具有最高的 Id 值。
稍后,如果您的表没有记录,您可能希望将First()
交换为FirstOrDefault()
。
方法签名已更改为仅返回一个 int 而不是整个列表。
【讨论】:
【参考方案2】:你可以试试下面的代码。
[HttpGet]
public int GetStudentId()
var id = _context.StudentModel.OrderByDescending(a => a.Id).FirstOrDefault();
return id.Id;
你也可以像下面这样写:
[HttpGet]
public int GetStudentId()
var id = _context.StudentModel.Max(a => a.Id).FirstOrDefault();
return id.Id;
注意:你要做的是,需要过滤数据库实体的最大值或顶部条目,然后返回它。我也这样做了。
【讨论】:
public IEnumerableIEnumerable<StudentModel>
你想要一个 id 对吗?
是的,我需要新记录的 id(只有单个 id),当我使用 public int GetStudentId() var id = _context.StudentModel.OrderByDescending(a => a.Id) 时你的代码很好.FirstOrDefault();返回 id.Id;
是的!你的代码也是一样的。那么如果我只想返回字符串数据而不是 Id 怎么办? (StName=Tom)【参考方案3】:
更改方法以返回与您的 Id 相同的类型,然后仅获取集合的第一项并返回其属性 Id。
应该是这样的。
public int GetStudentId()
var student = _context.StudentModel.OrderBy(a => a.Id).FirstOrDefault();
return student.Id;
【讨论】:
以上是关于如何在 ASP.NET Core Web API 中使用 LINQ 仅从数据库中获取最新的 id?的主要内容,如果未能解决你的问题,请参考以下文章
如何在 Asp.net Core Web Api 中默认使用 Newtonsoft.Json?
如何在 ASP.NET Core Web API 中使用 MassTransit 事件总线?
如何在 asp.net core web api 中绑定 Json Query 字符串
ASP.NET Core Web API - 如何在中间件管道中隐藏 DbContext 事务?