c# - 如何从可用数字中获取随机数?

标签 c# entity-framework

我有一个表,我试图从中获取随机数:

//Fruits
id  |  FruitName
----------------
2   |  Banana
3   |  Apple
4   |  Orange
6   |  Grape
7   |  Plum
8   |  Lime
10  |  Kiwi

问题是因为不一致(注意:ids 1、5、9缺失),写下面的语句是行不通的(即使写得正确):

Random.Next(someLinq.id).First(), (samelinq.id).Last())

我如何从可用数字中获得随机数?

最佳答案

您可以简单地使用项目的数量作为最大随机数,然后通过索引选择一个随机项目:

var random = new Random();
var items = new List<int> {2, 3, 4, 6, 7, 8, 10};
var randomItem = items[random.Next(items.Count)];

或者,在您的情况下(假设您正在获取包含 Id 属性的 Fruit 项目列表):

var items = new List<Fruit>
{
    new Fruit {Id = 2, Name = "Banana"},
    new Fruit {Id = 3, Name = "Apple"},
    new Fruit {Id = 4, Name = "Orange"},
    new Fruit {Id = 6, Name = "Grape"},
    new Fruit {Id = 7, Name = "Plum"},
    new Fruit {Id = 8, Name = "Lime"},
    new Fruit {Id = 10, Name = "Kiwi"}
};

var random = new Random();
var randomItem = items[random.Next(items.Count)];

Console.WriteLine("Randomly chose fruit: Id = {0}, Name = {1}", 
    randomItem.Id, randomItem.Name);

关于c# - 如何从可用数字中获取随机数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47361162/

相关文章:

c# - 使用 ENTity Framework 查询填充 DTO 类 List<>

asp.net-mvc - EF Code First 和确认字段

c# - 在 VS2019 中测试 C# 9.0 - CS0518 IsExternalInit 未定义或导入......我如何定义/导入它?

c# - C# 中的智能 pretty-print 日期时间

c# - Entity Framework Core 读取和更新多行 - 复合主键

c# - 无法将 DateTime 从 EF "Code First"保存到 MySQL 远程数据库

entity-framework - 使用 EF 4.3 运行更新数据库时出错

c# - 接口(interface)和部分类

c# - Entity Framework 6 中多个上下文的单个事务

c# - 使用 IO 在 C# 中读取十六进制