PDA

View Full Version : سوال: sort کردن اعدادی که به صورت رشته ذخیره شدن



mohammad_2039
شنبه 30 مرداد 1389, 10:41 صبح
با سلام خدمت دوستان عزیز.
من تو بانک یه جدول دارم که یه فیلد از نوع nvarchar داره . داخل این فیلد عدد ذخیره میکنم (از تکس باکس):لبخند:. من با استفاده از CurencyManager تو برنامه بروی اطلاعات این فیلد حرکت میکنم. منتها به همون ترتیبی که ذخیره شده به جلو یا عقب میره. حالا اگه بخوام روی این فیلد sort انجام بدم (با توجه به این که اعداد به صورت رشته ذخیره شده) باید چیکار کنم.لطفا بنده رو راهنمایی کنید با تشکر:لبخندساده:

group45
شنبه 30 مرداد 1389, 12:50 عصر
سلام
بیا رشتتو بریز تو یه آرایه و از کد زیر واسه سورت کردنش استفاده کن
array.sort(your array);v
پرانتزو که باز کنی متوجه ادامش میشی

mohammad_2039
شنبه 30 مرداد 1389, 13:03 عصر
آرایه باید از چه نوعی باشه ؟؟ بعد من نمیدونم که چند تا رکورد خواهد بود ؟ آرایه رو چند تایی تعریف کنم.

NIK
شنبه 30 مرداد 1389, 13:19 عصر
با سلام خدمت دوستان عزیز.
من تو بانک یه جدول دارم که یه فیلد از نوع nvarchar داره . داخل این فیلد عدد ذخیره میکنم (از تکس باکس):لبخند:. من با استفاده از CurencyManager تو برنامه بروی اطلاعات این فیلد حرکت میکنم. منتها به همون ترتیبی که ذخیره شده به جلو یا عقب میره. حالا اگه بخوام روی این فیلد sort انجام بدم (با توجه به این که اعداد به صورت رشته ذخیره شده) باید چیکار کنم.لطفا بنده رو راهنمایی کنید با تشکر:لبخندساده:

اولاً بهتره که فیلد جدولت رو به Int تغییر بدی. اینطوری مشکل به طور کامل حل میشه.
اگه هم نمیتونی تغییر بدی، بهتره اول از جدولت یه Select بگیری و بریزی توی یه دیتاتیبیل. بعد سطر به سطر فیلدها رو به Int تبدیل کنی و توی یه آرایه بریزی. اونوقت عملیات سورت رو انجام بدی.

البته اگه طول اعدادت با هم برابر باشه، نیازی به این کارها نیست.

group45
شنبه 30 مرداد 1389, 13:38 عصر
اول همشو تو یه string بریز بعد با string.lentgh تعدادشون معلوم میشه حالا یه آرایه به همون تعداد تعریف کن و ادامه ماجرا....
راستی اگه تعداد اعدادت فرق میکنن وقتی داری میریزیشون تو رشته بعد تموم شدن هر عدد مثلا یدونه - اضافه کن و موقع ریختن تو آرایه از split استفاده کن

pystar
شنبه 30 مرداد 1389, 15:33 عصر
با سلام
چرا از dataview استفاده نمیکنی؟ خاصیت sort داره

mohammad_2039
شنبه 30 مرداد 1389, 23:09 عصر
با سلام
چرا از dataview استفاده نمیکنی؟ خاصیت sort داره
من از کد زیر برای حرکت روی فیلد استفاده میکنم.



publicvoid curency()
{
SqlCommand cmd = newSqlCommand("select shenase from tbl_barname", sqlConnection1);
DataTable dt = newDataTable();
SqlDataAdapter da = newSqlDataAdapter("select shenase from tbl_barname", sqlConnection1);
da.Fill(dt);
DataView dv = dt.DefaultView;
cm = (CurrencyManager)this.BindingContext[dv];
textBoxX43.DataBindings.Add("Text", dv, "shenase");
}



حالا چطوری سورت کنم. dv.sort خطا میده .

مهدی فرزاد
شنبه 30 مرداد 1389, 23:47 عصر
سلام کدت رو به این شکل اصلاح کن
به جای DataTable بزار Dataset


DataSet dataset = new DataSet();
da.Fill(dataset, "tbl_barname");


و بعد

DataView dataV = new DataView(dataset.Tables["tbl_barname"]);

حالا


dataV.Sort = "نام فیلدی که میخوای سورت بشه";

cheshm6k
دوشنبه 01 شهریور 1389, 02:35 صبح
با سلام

یکی از راههای تبدیل عددی که به صورت رشته ذخیره شده اینه که با عدد صفر جمع کنیش بعد سورت رو انجام بدی.
به اینصورت :


Select (Cur+0) ....

#aliyari_C
دوشنبه 01 شهریور 1389, 07:06 صبح
ُسلام
اگر می خوای فیلد عدد یک رشته باشه

اول


public static class DataTableExtensions
{
public static DataView ApplySort(this DataTable table, Comparison<DataRow> comparison)
{

DataTable clone = table.Clone();
List<DataRow> rows = new List<DataRow>();
foreach (DataRow row in table.Rows)
{
rows.Add(row);
}

rows.Sort(comparison);

foreach (DataRow row in rows)
{
clone.Rows.Add(row.ItemArray);
}

return clone.DefaultView;
}


}


بعدش هم فرض می کنیم همچین Table داریم


DataTable table = new DataTable();
table.Columns.Add("IntValue", typeof(int));
table.Columns.Add("StringValue");

table.Rows.Add(11, "Eleven");
table.Rows.Add(14, "Fourteen");
table.Rows.Add(10, "Ten");
table.Rows.Add(12, "Twelve");
table.Rows.Add(13, "Thirteen");



حال به صورت زیر پیاده سازیش می کنیم.


DataView sorted = table.ApplySort((r, r2) =>
{
return ((int)r["IntValue"]).CompareTo(((int)r2["IntValue"]));
});


نتیجه
10 Ten
11 Eleven
13 Thirteen
12 Twelve
14 Fourteen


موفق باشی

__________________________________________________ __________________________________________________
چون به دریا می توانی راه یافت
سوی یک قطره چرا باید شتافـت

نتایج آماری,مقایسه ای بین String و StringBuildr (http://www.barnamenevis.org/forum/showthread.php?t=233987)