2009-06-03 22 views
2

我发现了一些关于使用RandomView视图和GetNewID函数来撤回随机记录的文章,但他们使用Linq to SQL这种方法允许函数和存储过程在没有返回值或标量返回值的情况下使用。据我所知,Stored Proc必须作为我生成的模型中的一个实体框架对象返回。我已经能够将它作为一个对象来工作,但不能返回标量或不返回集合。将一个随机Guid列添加到Linq to Entities查询以获取随机记录

我想要做的只是添加一列到我的Linq查询中,该查询包含一个新生成的Guid,这样我就可以通过新的Guids命令并随机获取特定数量的记录。任何人都可以帮助某种lambda表达式或加入,这将使我能够做到这一点?看起来它应该是EF内置的东西,但我知道我们在EF v1上。

(在VB.net请提供代码)

+0

请记住,guids是不是随机的 - 他们是独一无二的。你不应该依赖它们来提供任意的随机性。 – Enigmativity 2016-06-15 01:54:18

回答

2

嗯,我的VB是小生锈,但我认为这将工作...

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

在你的Linq查询的SELECT子句中,你应该能够插入一个GUID是这样的:

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

谢谢,罗伯特。我将如何在VB.net中做到这一点? – 2009-06-03 16:30:57

+0

`新的Guid()`将总是返回`00000000-0000-0000-0000-000000000000`。你需要使用`Guid.NewGuid()`来代替。 – 2010-11-07 22:55:53