Est-ce que quelqu'un sait comment sélectionner des objets aléatoires à partir d'une base de données Db4o?Db4o sélectionner des objets aléatoires
0
A
Répondre
1
Je pense que la meilleure façon est la suivante. Exécutez une requête et obtenez le résultat en tant que IList. Puisque la liste retournée charge paresseusement l'objet (au moins en mode intégré), vous pouvez sélectionner des objets aléatoires par l'index.
Quelque chose comme ceci:
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;
}
Et puis l'utiliser:
IList<Person> potentialObjects = container.query(Person.class);
ICollection<Person> randomObject = RandomObjects(potentialObjects,10);
Une autre possibilité serait de construire une LINQ-Query qui correspond au hasard. Cependant, une telle requête ne peut pas être optimisée, donc pourrait mal fonctionner.
var random = from Person p in dbc
where new Random().Next(2) == 1
select p;
Edit: Changé à C#
dans quelle langue? – skaffman
Ce sera en C# –
a changé ma réponse en C# – Gamlor