تحويل القائمة<int> إلى القائمة<string> في .NET 2.0

StackOverflow https://stackoverflow.com/questions/44942

  •  09-06-2019
  •  | 
  •  

سؤال

هل يمكنك إلقاء أ List<int> ل List<string> بطريقة ما؟

أعلم أنه يمكنني تكرار الأمر و .ToString()، لكن طاقم الممثلين سيكون رائعًا.

أنا في C# 2.0 (لذلك لا لينك).

هل كانت مفيدة؟

المحلول

.NET 2.0 لديه ConvertAll الطريقة التي يمكنك من خلالها تمرير وظيفة المحول:

List<int> l1 = new List<int>(new int[] { 1,2,3 } );
List<string> l2 = l1.ConvertAll<string>(delegate(int i) { return i.ToString(); });

نصائح أخرى

تم التحديث لعام 2010

List<int> l1 = new List<int>(new int[] { 1,2,3 } );
List<string> l2 = l1.ConvertAll<string>(x => x.ToString());

هل C#2.0 قادر على القيام بذلك؟ List<T>.Convert؟إذا كان الأمر كذلك، فأعتقد أن أفضل تخمين لك هو استخدام ذلك مع مندوب:

List<int> list = new List<int>();
list.Add(1);
list.Add(2);
list.Add(3);
list.Convert(delegate (int i) { return i.ToString(); });

شيء على هذا المنوال.


قم بالتصويت لصالح إجابة جلين، والتي ربما تكون هي الرمز الصحيح؛-)

لن تكون قادرًا على إرسالها مباشرةً نظرًا لعدم وجود تحويل صريح أو ضمني من int إلى السلسلة يملك لتكون طريقة تتضمن .ToString() مثل: -

foreach (int i in intList) stringList.Add(i.ToString());

يحرر - أو كما أشار الآخرون ببراعة، استخدم intList.ConvertAll(delegate(int i) { return i.ToString();})؛ ولكن من الواضح أنه لا يزال يتعين عليك استخدام .ToString() وهو تحويل وليس تحويلًا.

يمكنك استخدام:

List<int> items = new List<int>(new int[] { 1,2,3 } );
List<string> s = (from i in items select i.ToString()).ToList();

لديك لبناء قائمة جديدة.تمثيلات البت الأساسية لـ List<int> و List<string> غير متوافقة تمامًا - على نظام 64 بت، على سبيل المثال، الأعضاء الأفراد ليسوا حتى بنفس الحجم.

من الممكن نظريًا علاج أ List<string> ك List<object> - ينقلك هذا إلى عوالم مثيرة من التغاير والتناقض، وهو غير مدعوم حاليًا بواسطة C# أو VB.NET.

result = listOfInt.Select(i => i.ToString(CultureInfo.InvariantCulture)).ToList()

استبدل نتيجة المعلمات وlistOfInt بالمعلمات الخاصة بك

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top