Db4o选择随机对象

时间:2010-01-28 10:52:36

标签: c# db4o

有谁知道如何从Db4o db中选择随机对象?

1 个答案:

答案 0 :(得分: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-Query。但是这样的查询无法优化,因此可能表现不佳。

var random = from Person p in dbc
          where new Random().Next(2) == 1 
          select p;

编辑:已更改为C#