有谁知道如何从 Db4o 数据库中选择随机对象?
问问题
301 次
1 回答
1
我认为最好的方法是这样。运行查询并以 IList 形式获取结果。由于返回的列表延迟加载对象(至少在嵌入模式下),您可以按索引选择随机对象。
像这样的东西:
public static ICollection<T> RandomObjects<T>(IList<T> objectSet, int amount)
{
var resultSet = new HashSet<T>();
var random = new Random();
amount = Math.Min(objectSet.Count, amount);
while (resultSet.Count<amount)
{
resultSet.Add(objectSet[random.Next(amount)]);
}
return resultSet;
}
然后使用它:
IList<Person> potentialObjects = container.query(Person.class);
ICollection<Person> randomObject = RandomObjects(potentialObjects,10);
另一种可能性是构建一个随机匹配的 LINQ 查询。但是,这样的查询无法优化,因此可能会执行得很差。
var random = from Person p in dbc
where new Random().Next(2) == 1
select p;
编辑:更改为 C#
于 2010-01-28T12:48:13.957 回答