PDA

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 باشه.