PDA

View Full Version : خواندن رکورد تصادفی از جدول



aminmorteza
جمعه 05 آبان 1391, 21:09 عصر
سلام دوستان من میخوام یه هر بار که صفحه لود میشه یه رکورد تصادفی رو از جدول بخونم یه روش اینطوری هست که بیام تعداد رکورد ها رو بدست بیارم بعد با استفاده از تابع random یه عدد تصادفی از 1 تا تعداد رکورد ها ایجاد کنم و با یه دستور select اون رو بخونم ولی مشکل اینجاست که ممکنه رکوردی با اون عدد تصادفی تویه جدول نباشه ممکنه حذف شده باشه البته میشه این کار رو تویه یه حلقه انجام داد بگیم تا وقتی که یه برخورد صورت نگرفت این کار رو انجام بده ولی به نظرم این الگوریتم خیلی جالب نیست سوالم اینه که روش دیگه ای برای انجام این کار وجود نداره مثلا تابعی تویه خود sql وجود نداره که این کار رو انجام بده؟

hamed_hossani
شنبه 06 آبان 1391, 00:06 صبح
به نظر من>
ای دی پست ها را فقط برگردون>بریز تویه یک ارایه و یکی شو را راندوم انتخاب کن
و بعد اون رو از جدول پایگاه واکشی کن!

fakhravari
شنبه 06 آبان 1391, 02:47 صبح
مثلا ما id های اصلی تاپیک ها را داریم
protected void Button3_Click(object sender, EventArgs e)
{
string ss = Character(1, new int[] { 20, 12, 15, 46, 12 });
}



public static string Character(int Num, int[] Str)
{
Random rand = new Random();
System.Text.StringBuilder randstr = new System.Text.StringBuilder();

for (int i = 0; i < Num; i++)
{
randstr.Append(Str[rand.Next(0, Str.Length)]);
}
return randstr.ToString();
}

PhoenixNet
سه شنبه 09 آبان 1391, 19:03 عصر
سلام

اگه از ADO .NET استفاده می کنید :


SELECT * FROM table WHERE num_value >= RAND() * (SELECT MAX(num_value) FROM table) LIMIT 1


اگه از LINQ استفاده میکنید :

ابتدا یک کلاس به لایه دیتا یا پروژه خود اضافه کنید.(هرجایی که فایل LINQ قراردارد)


partial class MyDataContext {
[Function(Name="NEWID", IsComposable=true)]
public Guid Random()
{ // to prove not used by our C#‎‎ code...
throw new NotImplementedException();
}
}


MyDataContext را همنام کلاس LINQ .

استفاده :



var cust = (from row in ctx.Customers
where row.IsActive // your filter
orderby ctx.Random()
select row).FirstOrDefault();