English 中文(简体)
LINQ - 返回随机随机值无效
原标题:LINQ - return random value does not work
  • 时间:2012-05-24 17:13:15
  •  标签:
  • c#
  • asp.net

我的基础设施里有这门课, 可以返回随机图像。 它总是返回相同的图像。 我的网站里有完全相同的代码, 并且它有效 。 有什么想法吗?

< a href=>""https://stackoverflow.com/ questions/648196/random-row-fro From-linq-to-sql" >这个 问题是我从何处获得关于随机值的信息。 我不明白为什么它在一个地方运作,而不是另一个地方...

背景cs

public static class Background
{
    public static string Get()
    {
        photoBlogModelDataContext _db = new photoBlogModelDataContext();
        var image = _db.Images.OrderBy(x => Guid.NewGuid()).FirstOrDefault();
        return image.Small; // Always same value?
    }
}

在另一个页面上的相同代码,该页面的工作原理是,我环绕我的画廊,从中选择随机图像

<img src="@Url.Content("~/content/uploads/" + item.Images.OrderBy(x => Guid.NewGuid()).FirstOrDefault().Small)" alt="" />
最佳回答

嗯,我想说,有一次你有 语言实体, 和有一次linq2object

命令By( Guid. NewGuid () ) 工作方式不相同 。

如果您试图列举

public static class Background
{
    public static string Get()
    {
        photoBlogModelDataContext _db = new photoBlogModelDataContext();
        var image = _db.Images.ToList().OrderBy(x => Guid.NewGuid()).FirstOrDefault();
        return image.Small; // Always same value?
    }
}

它应该改变。

问题回答

< a href=> http://blogs.msdn.com/b/ericlippert/archive/2012/04/30/guid-guide-part- part- two.aspx" rel=“nofoln” >guids 不是随机数字 。 它们经常是顺序的, 因为它们有一个时间戳组件, 这意味着您总是从该代码中获得第一个或最后一个图像。 您应该使用 兰多姆 类( 或密码随机数字生成器之一, 如果它真的重要的话) 来获取 0 和 图像数量之间的随机数, 然后使用 n-th 图像( n 是随机数 ) 。 如果您在很短的时间内调用此函数一次以上, 那么您应该确保在所有调用的方法之间使用同样的例子 random 。 (这意味着让您重新使用的私人静随机实例。)

您为什么不能使用下面的System.random 类?

var random = new Random();
var index = random.Next(0, count); // use the list count here
var randomImage = _db.Images[index]; // or equivalent




相关问题
Anyone feel like passing it forward?

I m the only developer in my company, and am getting along well as an autodidact, but I know I m missing out on the education one gets from working with and having code reviewed by more senior devs. ...

How to Add script codes before the </body> tag ASP.NET

Heres the problem, In Masterpage, the google analytics code were pasted before the end of body tag. In ASPX page, I need to generate a script (google addItem tracker) using codebehind ClientScript ...

Transaction handling with TransactionScope

I am implementing Transaction using TransactionScope with the help this MSDN article http://msdn.microsoft.com/en-us/library/system.transactions.transactionscope.aspx I just want to confirm that is ...

System.Web.Mvc.Controller Initialize

i have the following base controller... public class BaseController : Controller { protected override void Initialize(System.Web.Routing.RequestContext requestContext) { if (...

Microsoft.Contracts namespace

For what it is necessary Microsoft.Contracts namespace in asp.net? I mean, in what cases I could write using Microsoft.Contracts;?

Separator line in ASP.NET

I d like to add a simple separator line in an aspx web form. Does anyone know how? It sounds easy enough, but still I can t manage to find how to do it.. 10x!