PDA

View Full Version : سوال: اضافه کردن عنصر به آرایه ای با طول نا مشخص



Itist82
جمعه 11 اردیبهشت 1388, 19:18 عصر
سلام
جایی از کدم دارم یه کوئری می زنم که نتیجه اش رو می خوام توی یه آرایه ی int بریزم اما از قبل نمی دونم که تعداد نتایج چند تاست تا آرایه ام رو از همون سایز تعریف کنم (این که ساز آرایه برابر عناصر باشه برام مهمه). در ضمن نتیجه ی کوئری توی یه datareader به اسمdr ریخته می شه و ترجیح می دم توی dataset نریزم (البته اگه راهی نباشه احتمالا باید همین کار رو کرد). این آخری مسلما خوبیش اینه که تعداد سطر های نتیجه رو می شه راحت فهمید و دیگه این سوال من بی معنی می شه. می خوام بدونم کسی راهی بلده که بشه جوری به این آرایه با طول نامشخص عنصر اضافه کرد که بعدا بشه با شماره اندیس بهشون دسترسی داشت؟
قبلا concat رو امتحان کردم، آرایه رو می سازه اما بعدا نمی شه با شماره اندیس به عنصر ها دسترسی داشت. اینم کدش:


int[] arr=new int[] {};
.
.
.
while(dr.read()){
arr.Concat({dr.GetValue(0)});
}

tdkhakpur
جمعه 11 اردیبهشت 1388, 19:30 عصر
سلام:
دوست عزیز اگه منظورتون اینه که میخواهید بصورت RunTime یه آرایه با در نظر گرفتن اینکه خودتون در اجرا مقدار اندیکس رو تعین کنید بصورت زیر عمل کن ولی اگه اینطور نیست سوالت رو واضح مطرح کن تا بتونیم کمکتون کنیم.


int *a;
int len;
len = 20;
a = new int [len];
//designe your program
delete [] a;

adinochestva
جمعه 11 اردیبهشت 1388, 19:37 عصر
می تونی اینجور بنویسی :


List<int> list = new List<int>;
.
.
.
while(dr.read()){
list.Add(dr.GetValue(0));
}

int[] arr = list.ToArray();

Itist82
جمعه 11 اردیبهشت 1388, 23:16 عصر
سلام:
دوست عزیز اگه منظورتون اینه که میخواهید بصورت RunTime یه آرایه با در نظر گرفتن اینکه خودتون در اجرا مقدار اندیکس رو تعین کنید بصورت زیر عمل کن ولی اگه اینطور نیست سوالت رو واضح مطرح کن تا بتونیم کمکتون کنیم.


int *a;
int len;
len = 20;
a = new int [len];
//designe your program
delete [] a;

ممنون ولی توی کد شما که مقدار Len ثابت و برابر 20 فرض شده. چیزی که من خواستم اصلا مشخص نیست چه عددی باشه



می تونی اینجور بنویسی :


List<int> list = new List<int>;
.
.
.
while(dr.read()){
list.Add(dr.GetValue(0));
}

int[] arr = list.ToArray();



خیلی خیلی ممنون. فکر کنم راه حل، کد شما باشه. فقط می خواستم بپرسم آیا این متد ToArray عناصر لیست رو درست به همون ترتیبی که به لیست اضافه کرده بودیم به صورت آرایه در میاره؟ آخه ترتیب خیلی برام مهمه. مهمه که عنصری که اول توی لیست گذاشته می شه اندیسش صفر باشه و به همین ترتیب.

khaste_007
شنبه 12 اردیبهشت 1388, 02:58 صبح
بله
حتی شما که فقط می خواهید با ایندکس به عناصر دسترسی داشته باشید نیازی به کپی در یک آرایه جدید ندارید و خود List این امکان را دارد.

babila
یک شنبه 13 اردیبهشت 1388, 13:58 عصر
می تونی از متد Resize مربوط به کلاس Array استفاده کنی .
Array.Resize(ref arrayName,NewSize

NewFoxStudent
یک شنبه 13 اردیبهشت 1388, 14:06 عصر
یه راه دیگه هم اینه که اول با دستور Count تعداد رکوردها رو از بانک بگیری و براساس تعداد آرایه رو بسازی و بعد کوئری رو اجرا کنی
من از این روش استفاده میکنم