استفاده از نوع داده long در شمارش دیتاتیبل
یک دیتا تیبل دارم سطرهای زیادی داره
که از یک شروع میشه تا چندین میلیارد
بعضی وقتا لازم این جدول اپدیت شه
هنگام اپدیت وقتی کد زیر را مینویسم
long total=dt_table.row[i]["mony"];
وقتی میخام به سطر iام دسترسی پیدا کنم چون i از نوع long م یباشد خطلا میگیره و میگه باید از نوع اینت باشه
این ئمشکلو چجوری برطرف کنم
نقل قول: استفاده از نوع داده long در شمارش دیتاتیبل
سلام ، خسته نباشی
از کد زیر استفاده کن :
long.TryParse(
dt_table.row[i]["mony"].ToString, out long total
);
متد TryPars یک نوع String میگیره و اگه بتونه اونو تبدیل میکنه به نوعی که میخوای .
بعد از اجرای این خط کد تو یک متغیر از نوع Long داری به اسم total و با مقدار درون
dt_table.row[i]["mony"];
بدرود
نقل قول: استفاده از نوع داده long در شمارش دیتاتیبل
منظورم من اینکه در کدی ک نوشتی اگه i از نوع long باشه باید چیکا کنیم
با محتوای جدول داری ندارم با اون شمارشگر مشکل دارم
نقل قول: استفاده از نوع داده long در شمارش دیتاتیبل
نقل قول:
نوشته شده توسط
ji ming u
منظورم من اینکه در کدی ک نوشتی اگه i از نوع long باشه باید چیکا کنیم
با محتوای جدول داری ندارم با اون شمارشگر مشکل دارم
خب شما i رو از کجا آوردی؟
من فکر میکنم یک حلقه for نوشتی درسته؟ چون گفتی شمارش گر
خب توی حلقه ی for به جای تعریف یک int ی دونه long تعریف کن مثال:
for(long l = 0;l==5;l++) {}
نقل قول: استفاده از نوع داده long در شمارش دیتاتیبل
نقل قول:
نوشته شده توسط
sajedmalayeri
خب شما i رو از کجا آوردی؟
من فکر میکنم یک حلقه for نوشتی درسته؟ چون گفتی شمارش گر
خب توی حلقه ی for به جای تعریف یک int ی دونه long تعریف کن مثال:
for(long l = 0;l==5;l++) {}
dt_table.row[i]
در این کد row فقط مقدار int را قبول میکنه
نقل قول: استفاده از نوع داده long در شمارش دیتاتیبل
میشه دلیل اینکه چند میلیارد رکورد رو یکجا لود میکنی و روش کار میکنی بگی؟ :متعجب::متعجب: یعنی واقعا این کار لازمه؟؟؟
نقل قول: استفاده از نوع داده long در شمارش دیتاتیبل
اگر هم از for استفاده نکردی میتونی این کارو کنی:
int.TryParse(i.ToString,out int newI);
و بعدش به جای i از newI استفاده کنی
نقل قول: استفاده از نوع داده long در شمارش دیتاتیبل
نقل قول:
نوشته شده توسط
ji ming u
dt_table.row[i]
در این کد row فقط مقدار int را قبول میکنه
خب به جای long از int استفاده کن
نقل قول: استفاده از نوع داده long در شمارش دیتاتیبل
نقل قول:
نوشته شده توسط
sajedmalayeri
خب به جای long از int استفاده کن
بیخیال داداش
نقل قول: استفاده از نوع داده long در شمارش دیتاتیبل
هرچند کار شما اصولی نیست و مطمئنا سرعت پیمایشتون بشدت کند خواهد بود، ولی میتونین از Foreach استفاده کنین
نقل قول: استفاده از نوع داده long در شمارش دیتاتیبل
دلیل مشکل شما این هست که در کلاس DataRowCollection برای دسترسی به سطرها از نوع int به عنوان ایندکس استفاده شده.شاید طراح این کلاس نظرش این بوده که int کفایت میکنه ولی شما یک مثال نقص شدی. در کل راه حل مستقیم برای مشکل شما وجود نداره. شاید به قول دوستمون foreach بتونه مشکل شما رو حل کنه ولی در این حالت دسترسی مستقیم به هر ردیف وجود نداره.به نظر من شما نیاز داری یک کلاس(به عنوان مثال BigTable) بنویسی که به جای یک تیبل از چند تیبل برای ذخیره اطلاعات استفاده کنه و در هر تیبل به اندازه int.MaxValue سطر نگهداری بشه. بعد هر ایندکسی که بهش داده میشه رو محاسبه کنه ردیف چندم از کدوم تیبل هست. نهایتا باید کلاسی باشه که بتونه این مورد رو مدیریت کنه و در عین حال به عنوان یک تیبل بزرگ هم دیده بشه.
باز هم در تایید حرف دوستان من هم میگم که نگهداری این حجم از دیتا در برنامه کار منطقی به نظر نمیاد. شاید دلیل محکمی برای اینکار دارید در غیر اینصورت بهتره در طراحی این قسمت برنامه یک بازنگری بکنید.
موفق باشید.