从数据库创建一个 Id 列表。 C#

creating a list of Id's from database. C#

我正在尝试生成一个随机 ID 号,因此当用户单击一个按钮时,它会重定向到一个随机艺术家。我能够做到,并且它与下面的代码配合得很好。

var artists = _context.Artists;
var totalArtists = artists.Count();
Random randomArtistNumber = new Random();
int randomArtistID = randomArtistNumber.Next(1, totalArtists + 1);

if (button.Equals("btnArtist"))
{
    return RedirectToAction("Details", "ArtistModels", new { id = randomArtistID.ToString() });
}

这里的问题是,如果用户删除了一位艺术家,那么我的 ID 号将不再存在于上面创建的随机列表中。我将如何着手创建艺术家 Table 中所有艺术家 ID 的列表<>?最好从活动 ID 列表中选择一个随机数

以下艺术家模特

public class ArtistModel
    {
        [Key]
        public int ArtistID { get; set; }
        public string ArtistName { get; set; }
        public string CountryOfOrigin { get; set; }
        public int SubgenreID { get; set; }
        public SubgenreModel Subgenre { get; set; }

        public ICollection<AlbumModel> Albums { get; set; }
    }

我猜你正在使用 Entity Framework?

您应该可以通过执行此操作从您的艺术家那里获取 ID 列表。

var artistIds = artists.Select(a => a.Id).ToList();

要正确执行此操作,您需要确保始终从上下文中加载所有艺术家。

如果你的随机函数有一个限制可能会更好,比如从前 200 位艺术家中随机 select 之类的。

既然你已经有了艺术家,你实际上可以做的是随机找一个艺术家,这和你有的没什么不同

类似于:

int randomArtistIndex = randomArtistNumber.Next(1, totalArtists); 
var artist = artists[randomArtistIndex]

然后

return RedirectToAction("Details", "ArtistModels", new { id = artist.ArtistID.ToString() });