View Full Version : نمایش براساس اعداد موجود در فیلد
bitcob589
شنبه 16 دی 1391, 12:34 عصر
با سلام
در دیتابیس یک فیلد وجود دارد که در آن اعداد در آن ذخیره می شود فیلدهای که در آن عدد 20 است درسلکت100% نمایش داده شود و فیلدهای که در آن عدد 21 است 70% در سلکت نمایش داده شودو فیلدهای که در آن عدد 22 است 40% در سلکت نمایش داده شودو فیلدهای که در آن عدد 23 است 10% در سلکت نمایش داده شود
چگونه می توان تمام سلکتهای بالا در یک دستور سلکت نوشت
reza_Nazem
پنج شنبه 28 دی 1391, 08:22 صبح
از دستور Case استفاده کن
bitcob589
یک شنبه 08 بهمن 1391, 12:22 عصر
از دستور Case استفاده کن
اگر امکان دارد یک مثال با کد بگذارید
reza_Nazem
یک شنبه 15 بهمن 1391, 12:48 عصر
فرض کردم نام فیلدت value و نام جدول table_1 است
کدش به شکل زیره
select value ,
case value
when 20 then '100%'
when 21 then '70%'
when 22 then '40%'
when 23 then '10%'
end as field1
from table_1
bitcob589
یک شنبه 15 بهمن 1391, 13:00 عصر
فرض کردم نام فیلدت value و نام جدول table_1 است
کدش به شکل زیره
select value ,
case value
when 20 then '100%'
when 21 then '70%'
when 22 then '40%'
when 23 then '10%'
end as field1
from table_1
کد بالا را با linq به چه صورتی می توان نوشت
tooraj_azizi_1035
یک شنبه 15 بهمن 1391, 13:37 عصر
from dr in table_1.AsEnumerable()
where dr.Value>=20 && dr.Value<=23
select new {NewValue= (100-((dr.Value - 20) * 30)).ToString()+'%' };
bitcob589
یک شنبه 15 بهمن 1391, 16:27 عصر
اگر امکان دارد درباره خط زیر توضیح دهید:گیج:
select new
{NewValue= (100-((dr.Value - 20) * 30)).ToString()+'%'
};
bitcob589
شنبه 19 اسفند 1391, 07:56 صبح
کدهای بالا توضیحات پست 1 پیاده سازی نکرد
در دیتابیس یک فیلد که در آن اعداد یک تا7 ذخیره می شود رکودهای که در آنها 7 بود در زمان سلکت کردن 100% رکودهای که در آنها عدد 7 نمایش داده شود رکودهای که در آنها 6بود در زمان سلکت کردن 80% رکودهای که در آنها عدد 6نمایش داده شود رکودهای که در آنها 5 بود در زمان سلکت کردن 50% رکودهای که در آنها عدد 5 نمایش داده شود رکودهای که در آنها 4 بود در زمان سلکت کردن 40% رکودهای که در آنها عدد 4نمایش داده شود رکودهای که در آنها 3 بود در زمان سلکت کردن 25%رکودهای که در آنها عدد 3 نمایش داده شود رکودهای که در آنها 2بود در زمان سلکت کردن 15% رکودهای که در آنها عدد 2نمایش داده شود رکودهای که در آنها 1 بود در زمان سلکت کردن 10% رکودهای که در آنها عدد 1نمایش داده شود چگونه می توان چنین کار انجام داد
Mahmoud.Afrad
شنبه 19 اسفند 1391, 16:46 عصر
باید تعداد هر کدوم از این موارد رو محاسبه کنید یعنی این 80 درصد و ... رو محاسبه کنید و بعد به همین تعداد از منبع داده take کنید.
مثال:
برای همین مثال اخیر مثلا برای عدد 6 باید 80 درصد تعداد اونهایی که عدد 6 هست رو محاسبه کنیم و به همین تعداد take کنیم:
List<tbl> result = new List<tbl>();
int count6 = Convert.ToInt32(db.tbl.Count(i => i.number == 6) * 0.80);
result.AddRange(db.tbl.Where(i => i.number == 6).Take(count6));
bitcob589
شنبه 19 اسفند 1391, 17:32 عصر
باید تعداد هر کدوم از این موارد رو محاسبه کنید یعنی این 80 درصد و ... رو محاسبه کنید و بعد به همین تعداد از منبع داده take کنید.
مثال:
برای همین مثال اخیر مثلا برای عدد 6 باید 80 درصد تعداد اونهایی که عدد 6 هست رو محاسبه کنیم و به همین تعداد take کنیم:
List<tbl> result = new List<tbl>();
int count6 = Convert.ToInt32(db.tbl.Count(i => i.number == 6) * 0.80);
result.AddRange(db.tbl.Where(i => i.number == 6).Take(count6));
همان طور که در پست هشت توضیح داده شد باید درصدهای مختلف حساب شود(100%و80%و50%و10%و......)
آیا این امکان دارد نتیجه همه پردازشها در یک گرید ویو نمایش دهیم چگونه می توان چنین کاری انجام داد
Mahmoud.Afrad
شنبه 19 اسفند 1391, 18:11 عصر
همه رو محاسبه و به لیست اضافه کنید. لیست رو هم به دیتاسورس گریدویو بدید.
List<tbl> result = new List<tbl>();
int count6 = Convert.ToInt32(db.tbl.Count(i => i.number == 6) * 0.80);
int count5 = Convert.ToInt32(db.tbl.Count(i => i.number == 5) * 0.50);
// ...
result.AddRange(db.tbl.Where(i => i.number == 6).Take(count6));
result.AddRange(db.tbl.Where(i => i.number == 5).Take(count5));
// ...
dataGridView1.DataSource = result;
bitcob589
شنبه 19 اسفند 1391, 18:19 عصر
چگونه می توان بصورت تصادفی 80% رکودهای در آنها عدد 6 است بدست آورد
bitcob589
شنبه 19 اسفند 1391, 19:56 عصر
همه رو محاسبه و به لیست اضافه کنید. لیست رو هم به دیتاسورس گریدویو بدید.
List<tbl> result = new List<tbl>();
int count6 = Convert.ToInt32(db.tbl.Count(i => i.number == 6) * 0.80);
int count5 = Convert.ToInt32(db.tbl.Count(i => i.number == 5) * 0.50);
// ...
result.AddRange(db.tbl.Where(i => i.number == 6).Take(count6));
result.AddRange(db.tbl.Where(i => i.number == 5).Take(count5));
// ...
dataGridView1.DataSource = result;
آیا می توان به صورت رندم 80% رکودهای در آنها عدد 6 نمایش داد
لطفا راهنمایی بفرمایید:ناراحت::گریه::گریه:
Mahmoud.Afrad
یک شنبه 20 اسفند 1391, 00:12 صبح
برای انتخاب رندوم به تعداد مورد نیاز در این تاپیک (http://barnamenevis.org/showthread.php?387989-%D8%A7%D9%86%D8%AA%D8%AE%D8%A7%D8%A8-%DA%86%D9%86%D8%AF-%D8%B1%DA%A9%D9%88%D8%B1-%D8%A8%D9%87-%D8%B5%D9%88%D8%B1%D8%AA-%D8%B1%D9%86%D8%AF%D9%85-%D8%AF%D8%B1-entity) کدشو گذاشتم.
bitcob589
یک شنبه 20 اسفند 1391, 10:12 صبح
کد زیر را درون یک متد نوشتم اما نتوانستم به صورت رندم 80% رکودهای در آنها عدد 6 نمایش دهم
private
void darsad()
{
int six = Convert.ToInt32(rt.rews.Count(i => i.darsd == 6) * 0.80);
result.AddRange(
from s in rt.rews.Take(six) where s.id == 6 orderby (newRandom()).Next() select s);
}
چگونه می توان کدی که در پست 11 گذاشته شده است به صورت رندم 80% رکودهای در آنها عدد 6 نمایش داد
Mahmoud.Afrad
یک شنبه 20 اسفند 1391, 15:47 عصر
این کلاسو اضافه کنید:
public static class myExtensionMethods
{
static Random rnd = new Random();
public static IEnumerable<T> RandomElements<T>(this IEnumerable<T> source, int number)
{
return source.OrderBy(r => rnd.Next()).Take(number);
}
}
به اینصورت استفاده کنید:
void darsad()
{
int six = Convert.ToInt32(rt.rews.Count(i => i.darsd == 6) * 0.80);
result.AddRange(rt.rews.Where(s => s.id == 6).RandomElements(six));
}
bitcob589
یک شنبه 20 اسفند 1391, 17:30 عصر
کد به صورت زیر استفاده شد
public partial class Default4 : System.Web.UI.Page
{
static Random rnd = new Random();
public static IEnumerable<T> RandomElements<T>(this IEnumerable<T> source, int number)
{
return source.OrderBy(r => rnd.Next()).Take(number);
}
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
sxDataContext rt = new sxDataContext();
List<rew> result = new List<rew>();
int six = Convert.ToInt32(rt.rews.Count(i => i.darsd == 6) * 0.80);
result.AddRange(rt.rews.Where(s => s.darsd == 6).RandomElements(six));
}
}
اما خطای زیر می دهد
Extension method must be defined in a non-generic static class
علت خطا چیست
Mahmoud.Afrad
یک شنبه 20 اسفند 1391, 20:04 عصر
اون کلاس باید اضافه بشه و البته خارج از کلاس Default4 باشه
public partial class Default4 : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
sxDataContext rt = new sxDataContext();
List<rew> result = new List<rew>();
int six = Convert.ToInt32(rt.rews.Count(i => i.darsd == 6) * 0.80);
result.AddRange(rt.rews.Where(s => s.darsd == 6).RandomElements(six));
}
}
}
public static class myExtensionMethods
{
static Random rnd = new Random();
public static IEnumerable<T> RandomElements<T>(this IEnumerable<T> source, int number)
{
return source.OrderBy(r => rnd.Next()).Take(number);
}
}
bitcob589
دوشنبه 21 اسفند 1391, 08:16 صبح
چگونه کلاس myExtensionMethods را با دستوراتی که درون page load گذاشته شده است را مرتبط کنیم
لطفا راهنمایی بفرمایید:ناراحت::گریه::گریه: :گریه::گریه::گریه:
Mahmoud.Afrad
دوشنبه 21 اسفند 1391, 17:20 عصر
RandomElements در پیج لود استفاده شده. مشکل شما چیه؟
bitcob589
دوشنبه 21 اسفند 1391, 22:39 عصر
کد به صورت زیر در pageload نوشته شد اما خطا می دهد چگونه کد ی که در پست 11 نوشته شده است با کلاس RandomElements در پیج لود بنویسیم
if
(!IsPostBack)
{
sxDataContext
rt = newsxDataContext();
List<rew> result = newList<rew>();
int six = Convert.ToInt32(rt.rews.Count(i => i.darsd == 6) * 0.80);
result.AddRange(rt.rews.Where(s => s.darsd == 6).RandomElements(six));
publicstaticIEnumerable<T> RandomElements<T>(thisIEnumerable<T> source, int number)
{
return source.OrderBy(r => rnd.Next()).Take(number);
}
}
Mahmoud.Afrad
سه شنبه 22 اسفند 1391, 01:29 صبح
مثل اینکه توجه نمیکنی! توی پست 18 کد قرار دادم دیگه. وگفتم باید کلاس myExtensionMethods خارج از کلاس Default4 باشه.
vBulletin® v4.2.5, Copyright ©2000-1403, Jelsoft Enterprises Ltd.