اضافه کردن مقادیر لیست به ارایه
سلام به همگی..
من یه لیست (از نوع اینتیجر) دارم که مقادیری داخلش وجود داره
List<int> list = new List<int>();
حالا من میخوام هر مقدار اینو به ارایه دو بعدی خودم اضافه کنم
int[][] A = new int[][] { list.ToArray() };
با این کد بالا میشه ولی مشکل اینه که همه ی مقادیر لیست توی بلاک اول ارایه ریخته میشه!
خب پس به این صورت حل میشه:
int[] x1 = list.ToArray();
int[][] A = new int[][] { new[] { x1[0] }, new[] { x1[1] }, new[] { x1[2] }, new[] { x1[3] } };
ولی خب (کد بالا) الان به صورت دستی این کارو کردم یعنی فقط 4 اندیس اولی لیست رو ریختم توی ارایه
چطور میتونم کل لیستم رو (حالا چه با حلقه و چه روش های دیگه) به این ارایه اضافه کنم.
یه مثال بزنید ممنون میشم!
نقل قول: اضافه کردن مقادیر لیست به ارایه
سلام.
با استفاده از متود Buffer.BlockCopy
می تونید این کار رو بکنید.
البته این روش در مورد آرایه های دندانه ای جواب نمیده.
فرض می کنیم یک لیست با 25 عضو از int32 داریم که قصد داریم در یک آرایه 5 * 5 کپی کنیم:
var myList = Enumerable.Range(0, 25).ToList();
int[,] myArray = new int[5, 5];
Buffer.BlockCopy(myList.ToArray(), 0, myArray, 0, 25 * 4);
اون 4 هم به خاطر این هست که هر int شامل 4 بایت هست.
نقل قول: اضافه کردن مقادیر لیست به ارایه
نقل قول:
نوشته شده توسط
مهرداد صفا
سلام.
با استفاده از متود
Buffer.BlockCopy
می تونید این کار رو بکنید.
البته این روش در مورد آرایه های دندانه ای جواب نمیده.
فرض می کنیم یک لیست با 25 عضو از int32 داریم که قصد داریم در یک آرایه 5 * 5 کپی کنیم:
var myList = Enumerable.Range(0, 25).ToList();
int[,] myArray = new int[5, 5];
Buffer.BlockCopy(myList.ToArray(), 0, myArray, 0, 25 * 4);
اون 4 هم به خاطر این هست که هر int شامل 4 بایت هست.
با تشکر از شما.
در انجمن stackoverflow هم مطرح کردم همین سوال رو که کد زیر رو پیشنهاد دادن:
int[][] A =list.Select(i =>new[]{ i }).ToArray();
(برای کسایی که به این مشکل بر میخورن)
بازم ممنون.