2009-06-03 6 views
2

J'ai trouvé des articles sur l'utilisation de la vue RandomView et de la fonction GetNewID pour retirer des enregistrements aléatoires, mais ils utilisent cette méthode avec Linq to SQL. permet d'utiliser les fonctions et les processus stockés sans valeur de retour ou valeur de retour scalaire. D'après ce que je comprends, un processus stocké doit être retourné comme l'un des objets Entity Framework de mon modèle généré. J'ai été capable de faire en sorte que cela fonctionne comme un objet, mais ne retourne pas un ensemble scalaire ou non. Ce que je veux faire est d'ajouter simplement une colonne à ma requête Linq qui contient un Guid nouvellement généré afin que je puisse commander par les nouveaux Guids et prendre un nombre spécifique d'enregistrements aléatoirement. Quelqu'un peut-il aider avec une sorte d'expression lambda ou de rejoindre qui me permettrait de faire cela? Il semble que cela devrait être quelque chose intégré dans EF, mais je comprends que nous sommes sur EF v1.Ajout d'une colonne Guid aléatoire à une requête Linq to Entities pour saisir des enregistrements aléatoires

(S'il vous plaît fournir le code dans VB.net)

+0

Gardez à l'esprit que les guids ne sont pas aléatoires - ils sont uniques. Vous ne devriez pas compter sur eux fournissant un semblant de hasard. – Enigmativity

Répondre

2

Eh bien, mon VB est un peu rouillé, mais je pense que cela fonctionnera ...

Dim result = 
    From myRecord in myTable _ 
    Select field1, _ 
      field2, _ 
      guidField = System.Guid.NewGuid() 
+0

Je pense qu'il devrait être: guidField = System.Guid.NewGuid() Mais, merci beaucoup! –

+0

Exactement. J'étais un Jedi VB6, mais j'ai découvert C# et je suis passé du côté obscur. :) –

+0

Je passe maintenant à C#, mais la plupart de mon code est toujours dans VB.net à cause de mon expérience passée. Je pense toujours en VB, cependant. J'essaie de secouer ça. :RÉ –

3

Dans la clause Select de votre requête Linq, vous devriez être en mesure d'insérer un GUID comme celui-ci:

var result = from myRecord in myTable 
    select new { 
     field1 = myRecord.field1, 
     field2 = myRecord.field2, 
     guidField = Guid.NewGuid() 
    }; 
+0

Merci, Robert. Comment ferais-je cela sur VB.net? –

+0

'new Guid()' retournera toujours '00000000-0000-0000-0000-000000000000'. Vous devez utiliser 'Guid.NewGuid()' à la place. –

Questions connexes