我正在创建一个应用程序,我必须从列表中显示一个问题而不重复。
public IEnumerable<dynamic> GetQue()
{
var result = obj.tblQuestions
.OrderBy(r => Guid.NewGuid())
.Select(o => new { o.id, o.Question, o.Opt1, o.Opt2, o.Opt3, o.Opt4 })
.Take(1);
return result;
}
目前我正在接受一个随机的问题,但重复一遍。如何在不重复的情况下获得记录?
答案 0 :(得分:0)
正如我在评论中所说,你可以使用随机的方法逐个获取元素,然后从列表中删除所选元素。重复此操作,直到列表为空。
我并不是在为你的案件准确提供所需的代码,你仍然需要让它适应你的课程,但这是它应该尊重的原则:
var list = new List<int> { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
int randomId;
Random rand = new Random();
if (list.Count != 0)
{
randomId = rand.Next(list.Count);
var randomElement = list[randomId];
list.RemoveAt(randomId);
return randomElement;
}
这从整数列表中获取随机元素,考虑到你的列表是数据是一个类,而不是你应该更新的那个。当然。
答案 1 :(得分:-1)
java.lang.IndexOutOfBoundsException: Inconsistency detected
答案 2 :(得分:-2)
来源:how to avoid number repeation by using random class in c#?
如果您在循环时将项目添加到列表中,则可以检查列表以查看是否已添加项目。我是新手,所以我真的不能为你编码,但这个想法就在那里。为已经循环的条目创建一个单独的列表,然后执行if语句以检查下一个条目是否在执行它之前是否在列表中。
我会在评论中做到这一点,但我没有50个代表,所以我无法启动评论链。 :/