我需要随机获取一个实体,如下所示,但ElementAtAsync不存在。这是什么原因以及什么是解决方法?
var index = random.Next(maxValue:count);
var song = await Context.Songs.ElementAt(index);
答案 0 :(得分:2)
如果您只需要db中的一个元素,并且您已经有了计数,那么您可以执行以下操作:
var index = random.Next(maxValue:count);
var songQuery = await Context.Songs
.OrderyBy(x => x.Something)
.Skip(index)
.Take(1)
.ToListAsync();
var song = songQuery.SingleOrDefault(); // this works due to the Take(1) above
答案 1 :(得分:0)
我不确定为什么它不存在,但解决方法可能如下所示。
var song await = Context.Songs.OrderBy(o => o.Id)
.Skip(index)
.FirstOrDefaultAsync();
此Linq查询将导致相同的结果,但基础查询可能有点不同。