我得到最大身份
db.info_dbs.Max(u => u.id);
我如何获得之前的ID和(下一个id(之前的))
答案 0 :(得分:2)
按顺序递减命令集合,跳过第一个集合,并在集合中绘制下一个图表。这就是你要找的东西吗?
var collection = new[]
{
new { Id = 1 },
new { Id = 3 },
new { Id = 2 },
new { Id = 5 }
};
var secondHighestIdValue = collection.OrderByDescending(x => x.Id).Skip(1).First();
Console.WriteLine(secondHighestIdValue); // { Id = 3 }
答案 1 :(得分:1)
此Id字段是标识列吗?上一个是Max(Id) - 1,下一个Id是Max(id)+ 1。
但是,使用像这样的标识列是一个坏主意,因为您可以同时在数据库中运行许多事务,并且无法保证在您使用时计算的下一个/上一个值是正确的以后再去使用它们。
如果您还有其他需要,请告诉我。
答案 2 :(得分:0)
给出ID(在我的情况下,是图片),这里是如何获得下一个图片ID和前一个图片ID。我使用这两个辅助方法:
public int GetPreviousPictureId(int id)
{
var picture = db.Pictures.Where(x => x.Id < id).OrderByDescending(x => x.Id).FirstOrDefault();
if (picture != null)
return picture.Id;
return 0;
}
public int GetNextPictureId(int id)
{
var picture = db.Pictures.Where(x => x.Id > id).OrderBy(x => x.Id).FirstOrDefault();
if (picture != null)
return picture.Id;
return 0;
}
要获取上一个,我只会使用较低内容ID ,下降ID为的内容来过滤图片,以便列表的第一个元素(FirstOrDefault)是我需要的元素。
要获得下一个,我会做相反的事情。我只使用更高内容,按ID 升序的内容来过滤图片,以便列表中的第一个元素是我需要的内容。
如您所见,我检查空并返回id(如果不为null)。 如果找不到图片则返回0 。如果没有找到,一些开发人员更喜欢返回-1。由你决定。
数据库的第一张图片没有前一张图片。 数据库的最后一张图片没有下一张。
希望这有帮助(实际应该回答这个问题)。