0

Db4o db からランダムなオブジェクトを選択する方法を知っている人はいますか?

4

1 に答える 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-Query を作成することです。ただし、このようなクエリは最適化できないため、パフォーマンスが低下する可能性があります。

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

編集:C#に変更

于 2010-01-28T12:48:13.957 に答える